1

I'm developing a recurrent neural network in python using keras to do binary classification on roulette wheel data. I'm trying to compile my code but it's crashing, could you help me fix the code please?

Here is my code:

from keras.models import Sequential
from keras.layers import Dense, Dropout
from sklearn.preprocessing import MinMaxScaler
import numpy as np
import pandas as pd

columns = ['data', 'resultado']
base = pd.read_csv("blaze_values_27_01_2023_VERMELHO_1.csv", header = None, names = columns)
base = base.dropna()
base_treinamento = base.iloc[:, 1:2]

normalizador = MinMaxScaler(feature_range=[0,1])
base_treinamento_normalizada = normalizador.fit_transform(base_treinamento)


previsores = []
saida_real = []

for i in range (90,1809):
    previsores.append(base_treinamento_normalizada[i-90:i,0])
    saida_real.append(base_treinamento_normalizada[i,0])
previsores, saida_real = np.array(previsores), np.array(saida_real)
previsores = np.reshape(previsores, (previsores.shape[0],previsores.shape[1],1))

regressor = Sequential()
regressor.add(Dense(100, input_shape = (previsores.shape[1],1), activation='relu'))



regressor.add(Dense(1, activation = 'sigmoid'))


regressor.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
regressor.fit(previsores, saida_real, epochs = 100, batch_size = 32)

The error I am getting is: Epoch 1/100 Traceback (most recent call last):

File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/spyder_kernels/py3compat.py", line 356, in compat_exec exec(code, globals, locals)

File "/Users/mac/untitled0.py", line 34, in regressor.fit(previsores, saida_real, epochs = 100, batch_size = 32)

File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/utils/traceback_utils.py", line 67, in error_handler raise e.with_traceback(filtered_tb) from None

File "/var/folders/1j/tbck9lp54kndrb4nl53xdjgr0000gp/T/autograph_generated_file27ts368.py", line 15, in tf__train_function retval = ag__.converted_call(ag__.ld(step_function), (ag__.ld(self), ag__.ld(iterator)), None, fscope)

ValueError: in user code:

File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/engine/training.py", line 1051, in train_function  *
    return step_function(self, iterator)
File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/engine/training.py", line 1040, in step_function  **
    outputs = model.distribute_strategy.run(run_step, args=(data,))
File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/engine/training.py", line 1030, in run_step  **
    outputs = model.train_step(data)
File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/engine/training.py", line 890, in train_step
    loss = self.compute_loss(x, y, y_pred, sample_weight)
File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/engine/training.py", line 948, in compute_loss
    return self.compiled_loss(
File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/engine/compile_utils.py", line 201, in __call__
    loss_value = loss_obj(y_t, y_p, sample_weight=sw)
File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/losses.py", line 139, in __call__
    losses = call_fn(y_true, y_pred)
File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/losses.py", line 243, in call  **
    return ag_fn(y_true, y_pred, **self._fn_kwargs)
File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/losses.py", line 1930, in binary_crossentropy
    backend.binary_crossentropy(y_true, y_pred, from_logits=from_logits),
File "/Users/mac/opt/anaconda3/lib/python3.9/site-packages/keras/backend.py", line 5283, in binary_crossentropy
    return tf.nn.sigmoid_cross_entropy_with_logits(labels=target, logits=output)

ValueError: `logits` and `labels` must have the same shape, received ((None, 90, 1) vs (None,)).
2
  • Welcome to StackOverflow, your error means that the output of your network has a different shape from the labels, maybe this line is wrong: previsores = np.reshape(previsores, (previsores.shape[0],previsores.shape[1],1)) Commented Jan 29, 2023 at 20:50
  • How could I fix the code to be correct? Any idea? Commented Jan 29, 2023 at 20:55

1 Answer 1

0

Remove this: previsores = np.reshape(previsores, (previsores.shape[0],previsores.shape[1],1))

And try this:

regressor.add(layers.Dense(100, input_shape = (previsores.shape[1],), activation='relu'))  

instead of regressor.add(Dense(100, input_shape = (previsores.shape[1],1), activation='relu'))


Another thing, a dense layer as the first layer is not a recurrent neural network, you should try LSTM instead. In that case you can keep that shape. For example:

regressor.add(layers.LSTM(100, input_shape = (previsores.shape[1], 1)))
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.