我想创建一个神经网络,即-说起来容易-从图像(灰度)中创建图像 我已经成功创建了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的形状,但最后一个尺寸除外(收到的(32,600))。
我已经尝试过弄平你了:
youtflat = yout.transpose(1,0,2).reshape(-1,yout.shape[1]*yout.shape[2])
但这会导致相同的错误
答案 0 :(得分:0)
看来您正在完全展平标签( yout ),也就是说,您丢失了批量尺寸。如果原始 yout 的形状为(3200, 30, 20)
,则应将其重塑为(3200, 30*20)
的形状,该形状等于(3200, 600)
:
yout = numpy.reshape((3200, 600))
然后它应该工作
注意
但是,建议的修复程序只能消除错误。我发现您的方法有很多问题。对于您要执行的任务(获取图像作为输出),不能将sparse_categorical_crossentropy
用作损失,将accuracy
用作度量。您应该改用“ mse”或“ mae”。