如何解决另一个“检查目标时发生错误:预期density_2的形状为4,,但数组的形状为1,”
我正在Python 3中使用Keras。我遇到的问题似乎与许多其他问题类似,尽管我没有看到如何设置该问题,但我能告诉我的最好情况是我可能需要使用Flatten()。参数正确。我收到错误消息:
ValueError:检查目标时出错:预期density_2具有形状 (4,)但形状为(1,)
的数组
我的数据还不是图像,但它们是我已经放入数据帧的序列。
model = Sequential()
model.add(Dense(30,input_dim=16,activation='relu'))
model.add(Dense(len(TheBinsizeList),activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
model.fit(Train_Columns,TrainTarget_Columns.to_frame(),epochs=100,batch_size=64)
print(Train_Columns.shape)
# Gives a value of (1627,16)
print((TrainTarget_Columns.to_frame()).shape)
# Gives a value of (1627,1)
现在TrainTarget_Columns的值是这两个元组的1627:
(1494,3)(1080,2)(1863,2)(919,4)(1700,2)(710,4)(1365,4)(1815,3)(1477,2)(1618) ,1)...
主题编号是每个小管中的第一个条目,第二个条目是作为训练目标的值。
虽然我看到将density_2中的TheBinsizeList从4更改为2会导致期望的形状从(4,)变为(2,),但我看不到如何正确使用Flatten(如果需要)格式化值。
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None,30) 510
_________________________________________________________________
dense_2 (Dense) (None,4) 124
=================================================================
Total params: 634
Trainable params: 634
Non-trainable params: 0
感谢您的任何帮助。
解决方法
考虑到模型摘要,模型需要输入形状(batch_size,16)
和目标形状(batch_size,4)
。
如果目标的形状为(1627,1)
,则说明您有问题。
解决方案:将其更改为一个热门变量(例如,使用tf.one_hot(y,n_classes)
),错误应消失
import numpy as np
import tensorflow as tf
input_dim = 16
hidden_dim = 30
n_classes = 4
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(hidden_dim,input_dim=input_dim,activation='relu'))
model.add(tf.keras.layers.Dense(n_classes,input_dim=hidden_dim,activation='relu'))
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
X = np.random.randn(100,input_dim)
y = np.random.randint(0,n_classes,size=(100,))
model.fit(X,y)
# ValueError: Shapes (None,1) and (None,4) are incompatible
y = tf.one_hot(y,n_classes)
model.fit(X,y)
# Works !
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。