【发布时间】:2019-06-25 17:10:04
【问题描述】:
您好,我正在使用图像形状 (160,320,3),我已经设置了以下代码并希望使用 Softmax 函数结束它,但是出现如下错误“ValueError:检查目标时出错:预期 softmax1 的形状为 (10,),但得到的数组的形状为 (1,)"
代码如下:
model = Sequential()
with tf.name_scope("Lamda"):
model.add(Lambda(lambda x: (x / 255.0) - 0.5, input_shape=(160,320,3), name='lamda1'))
with tf.name_scope("Cropping"):
model.add(Cropping2D(cropping=((70,25), (0,0)), input_shape=(160,320,3), name='crop1'))
with tf.name_scope("Drop"):
model.add(Dropout(0.5, name='drop1'))
with tf.name_scope("conv"):
model.add(Convolution2D(24, (5,5), activation="relu", strides=(2, 2), name='conv1'))
model.add(Convolution2D(36, (5,5), activation="relu", strides=(2, 2), name='conv2'))
model.add(Convolution2D(48, (5,5), activation="relu", strides=(2, 2), name='conv3'))
model.add(Convolution2D(64, (3,3), activation="relu", name='conv4'))
model.add(Convolution2D(64, (3,3), activation="relu", name='conv5'))
with tf.name_scope("Flat"):
model.add(Flatten(name='flat1'))
with tf.name_scope("Dencity"):
model.add(Dense(100, name='Dense1'))
with tf.name_scope("Drop"):
model.add(Dropout(0.2, name='drop2'))
with tf.name_scope("Dencity"):
model.add(Dense(75, name='Dense2'))
with tf.name_scope("Drop"):
model.add(Dropout(0.2, name='drop3'))
with tf.name_scope("Dencity"):
model.add(Dense(10, name='Dense3'))
with tf.name_scope("Soft"):
model.add(Dense(10, activation="softmax", name='softmax1'))
model.summary()
with tf.name_scope("Loss"):
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, validation_split=0.2, shuffle=True, epochs=EPOCHS, batch_size=BATCH_SIZE, callbacks=[cb], verbose=2)
模型总结给出的输出形状是 10 并且尝试了各种模式但仍然遇到同样的问题,非常感谢一些支持和指导,因为我是 Keras 的新手。
图层(类型)输出形状参数#
lamda1 (Lambda) (无, 160, 320, 3) 0
crop1 (Cropping2D) (无, 65, 320, 3) 0
drop1 (丢弃) (None, 65, 320, 3) 0
conv1 (Conv2D) (无, 31, 158, 24) 1824
conv2 (Conv2D) (无, 14, 77, 36) 21636
conv3 (Conv2D) (无, 5, 37, 48) 43248
conv4 (Conv2D) (None, 3, 35, 64) 27712
conv5 (Conv2D) (无, 1, 33, 64) 36928
flat1(展平)(无,2112)0
密集1(密集)(无,100)211300
drop2(丢弃)(无,100)0
Dense2(密集)(无,75)7575
drop3(辍学)(无,75)0
Dense3(密集)(无,10)760
softmax1(密集)(无,10)110
【问题讨论】:
-
X_train,y_train 的形状?
-
您可以尝试使用 keras.utils.to_categorical(y, num_classes=None) 对 y 变量进行一次热编码。
-
或者不要 one-hot 编码
y_train并使用'sparse_categorical_crossentropy'作为损失函数。请参阅this answer 了解更多信息。 -
使用了 'sparse_categorical_crossentropy' 并删除了错误,但结果为 loss = loss: nan
标签: python-3.x keras