我正在尝试以下代码(从https://www.kdnuggets.com/2017/10/seven-steps-deep-learning-keras.html修改):
def single_layer(input_shape, nb_classes):
print("input shape:", input_shape)
print("print nb_classes:", nb_classes)
from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential()
model.add(Dense(nb_classes, input_shape=input_shape, activation='softmax'))
model.compile(optimizer='sgd', loss='categorical_crossentropy')
model.summary()
return model
但是,当我尝试用一X_train个维度64,64,3和 17 个类来拟合这个模型时,以下是有错误的输出:
input shape: (64, 64, 3)
print nb_classes: 17
Using TensorFlow backend.
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 64, 64, 17) 68
=================================================================
Total params: 68
Trainable params: 68
Non-trainable params: 0
_________________________________________________________________
Traceback (most recent call last):
....
....
File "/home/abcd/.local/lib/python3.5/site-packages/keras/engine/training.py", line 950, in fit
batch_size=batch_size)
File "/home/abcd/.local/lib/python3.5/site-packages/keras/engine/training.py", line 787, in _standardize_user_data
exception_prefix='target')
File "/home/abcd/.local/lib/python3.5/site-packages/keras/engine/training_utils.py", line 127, in standardize_input_data
'with shape ' + str(data_shape))
ValueError: Error when checking target: expected dense_1 to have 4 dimensions, but got array with shape (10396, 17)
为什么此代码不起作用,应如何修改以使其起作用?