我有这样的输入
x=[[0,0,0,0,1,0,0,0]....[n,n,n,n,n,n,n,n]]
x.shape=(18998,8)
这样的输出
y= 11 11 11 11 ... 10
y.shape=(18998,)
我这样构建模型
env_model = Sequential()
env_model.add(Dense(8, activation='relu', input_dim=8))
env_model.add(Dense(128, activation='relu'))
env_model.add(Dense(256, activation='relu'))
env_model.add(Dense(512, activation='relu'))
env_model.add(Dense(14, activation='softmax'))
env_model.summary()
env_model.save('model_weights/weights.environment.h5')
我认为该模型应该没什么问题,但我不断收到如下错误:
'ValueError:检查目标时出错:预期density_8具有形状(14,)但具有形状(1,)的数组'
您能帮我指出我的输入,输出或模型出了什么问题吗?我期待着您的帮助。非常感谢你!
答案 0 :(得分:0)
在您的模型中,
env_model.add(Dense(14, activation='softmax'))
Dense向量需要一个目标形状数组(batch_size,14)。您正在为其提供形状数组(batch_size)。
注意:在NumPy数组的形状中,逗号定义了未指定的尺寸。假设您有一个形状数组(12,)。意味着您有12个不同长度的样本(1、2、6等)。第二个暗角不是特定的,因此由
,
表示。
因此,您需要将目标数据转换为形状(18998,dim),其中dim是要素的长度。要实现这一点,您可以尝试两种方法:
keras.utils.to_categorical()
将目标数据转换为分类数据keras.preprocessing.sequences.pad_sequence()
因此,最后,您应该具有固定长度的目标数据。