我想创建一个神经网络,简单地说,它可以从图像中创建图像(灰度(我已经成功地创建了一个包含3200个输入和输出(标签(图像示例的数据集。(我知道数据集应该更大,但这不是现在的问题(
输入Xin]的大小为(3200,50,30(,因为它是50*30像素输出[yout]的大小为(3200,30,20(,因为它是30*20像素
我想尝试一个完全连接的网络(稍后在CNN上(完全连接模型的构建看起来是这样的:
# 5 Create Model
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(256, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(30*20, activation=tf.nn.relu))
#compile the model
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 6 Train the model
model.fit(Xin, yout, epochs=1) #train the model
之后我得到以下错误:
ValueError:形状不匹配:标签的形状(接收到的(19200,((应等于logits的形状,除了最后一个维度(接收到(32600((。
我已经试着压平你了:
youtflat = yout.transpose(1,0,2).reshape(-1,yout.shape[1]*yout.shape[2])
但这导致了相同的错误
看起来您正在完全压平标签(yout(,即您正在丢失批次维度。如果您的原始yout具有(3200, 30, 20)
的形状,则应将其重塑为(3200, 30*20)
的形状,该形状等于(3200, 600)
:
yout = numpy.reshape((3200, 600))
然后它应该工作
注意但是,建议的修复程序只会删除错误。不过我发现你的方法有很多问题。对于要执行的任务(获取图像作为输出(,不能将sparse_categorical_crossentropy
用作损失,将accuracy
用作度量。您应该使用"mse"或"mae"。