luis.galdo
luis.galdo

Reputation: 593

Input of 3D array into Sequential model Keras (Python)

I have a training input in 3 dimensions (8,50,3). I am trying to pass it as an input to the Sequential Model in Keras. Looking up the documentation I found that this should work:

model = Sequential()
model.add(Dense(100, activation='relu', input_shape=(50,3)))
model.add(Dense(100,init="uniform", activation='sigmoid'))
model.add(Dense(50,init="uniform", activation='relu'))
model.add(Dense(output_dim=1))
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])

When I try to train this model:

model.fit(train,labelTrain,epochs=1,batch_size=1,verbose=1)

I get the following error:

Error when checking model target: expected dense_148 to have 3 dimensions, but got array with shape (8, 1)

What can it mean?

Also, my first objective was to pass a 3D array where the middle dimension did not have a fixed size but I gave up after finding it impossible. Could it work?

Upvotes: 2

Views: 2401

Answers (1)

Daniel Möller
Daniel Möller

Reputation: 86600

Target means it's the expected result. The problem is in labelTrain, not in the input.

A Dense layer must have a number of neurons. You don't pass it an output shape, you pass the amount of neurons, and the output is automatically (None, neurons)

Your last layer should be:

model.add(Dense(1, activation='I recomend an activation here'))

Upvotes: 1

Related Questions