【发布时间】:2019-03-28 17:41:49
【问题描述】:
我第一次使用 Keras 构建 Conv Net。我的图层如下:
layers = [
Conv2D(8,kernel_size=(4,4),padding='same',input_shape=( 200, 180,3),kernel_initializer="glorot_normal",data_format="channels_first"),
Activation("relu"),
MaxPooling2D(pool_size=(8,8),padding='same',data_format='channels_first'),
Conv2D(16,(2,2),padding='same',kernel_initializer="glorot_normal"),
Activation("relu"),
MaxPooling2D(pool_size=(4,4),padding='same',data_format='channels_first'),
Conv2D(4,(3,3),padding='same',kernel_initializer="glorot_normal"),
Activation("relu"),
MaxPooling2D(pool_size=(2,2),padding='same',data_format='channels_first'),
Flatten(),
Dense(2,input_shape=(48,)),
Softmax(axis=-1)
]
#Edit, here is the part for compiling the model and fitting it
model = Sequential(layers)
model.compile(optimizer="adam",loss="sparse_categorical_crossentropy"
metrics=["accuracy"])
trainHistory = model.fit(x=X_train,y=Y_train,batch_size=3,epochs=1000)
我的标签数组的形状为(,2)。但是当我尝试在模型上使用 fit 时,它给了我softmax_1 预期形状为(1,) 的错误。但我已经明确提到了Dense 的单位为 2,softmax 返回与输入相同维度的输出。
那么 1, 是从哪里来的呢?我尝试使用一维的虚拟标签数组并运行。那么我做错了什么?如何使用我拥有的二维数组?
【问题讨论】:
-
您的代码对我来说似乎很好。确保标签数组的形状为
(n_samples, 2)。 -
是的,它有形状(样本数,2)。这就是为什么我没有得到什么是错的?为什么错误是(1,),而它显然是(2,)
-
我测试了你的代码,它可以在我的机器上运行。奇怪的是,如果目标形状正确,它会给你这个错误。尝试升级 Keras,看看是否解决。此外,您能否添加构建模型的代码以及
fit调用? -
@今天我添加了 fit 电话。请检查一下
标签: python tensorflow machine-learning keras conv-neural-network