gpt4 book ai didi

python - 检查目标 : expected softmax_1 to have shape (1, 时出错,但得到形状为 (2,)' 的数组,Keras

转载 作者:行者123 更新时间:2023-11-30 09:28:21 25 4
gpt4 key购买 nike

我第一次使用 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, 来自哪里?我尝试使用一维虚拟标签数组并且它运行。那么我做错了什么?如何使用已有的二维数组?

最佳答案

问题是您使用 sparse_categorical_crossentropy 作为损失函数。当给定标签(即 Y_train)被编码为整数(即​​ 0、1、2、...)时,使用此损失函数。但是,如果标签是单热编码的(代码中似乎就是这种情况),则需要使用 categorical_crossentropy 作为损失函数。

关于python - 检查目标 : expected softmax_1 to have shape (1, 时出错,但得到形状为 (2,)' 的数组,Keras,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52966765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com