【发布时间】:2019-05-09 07:50:47
【问题描述】:
我收到此错误:
ValueError: Error when checking target: expected dense_1 to have shape (1,) but got array with shape (2,)
当我跑步时:
num_classes = 2
model = keras.Sequential()
model.add(keras.layers.InputLayer(input_shape=[64,64,1]))
model.add(keras.layers.Conv2D(filters = 32, kernel_size=5, strides=1, padding ='same', activation='relu'))
model.add(keras.layers.MaxPooling2D(pool_size=5, padding='same'))
model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(512, activation='relu'))
model.add(keras.layers.Dense(num_classes, activation='softmax'))
#model.summary()
#Compile and train the model
model.compile(optimizer=tf.train.AdamOptimizer(0.001),
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x = tr_img, y = tr_lbl, epochs=2, batch_size = 5)
我的输入(图像)数据存储在一个 numpy 数组中,形状为:(300, 64, 64, 1)
我的标签有形状:(300, 2) 并且是一种热门格式,如下所示:[0,1]...
我该如何解决?
【问题讨论】:
-
sparse_categorical_crossentropy不要求类别编码为整数,而不是热编码? -
将
categorical_crossentropy用于您的loss 函数。sparse_categorical_crossentropy用于当您的目标是整数,而不是one-hot-encoded。 -
在
keras.layers.InputLayer(input_shape=[64,64,1]中,您的input_shape 应该是tuple(64,64,1),而不是列表。 -
@RezaBehzadpour 如果你愿意,你可以使用一个列表。不必是一个元组
标签: python-2.7 numpy tensorflow keras