0

我想创建一个神经网络,它——简单地说——从图像(灰度)中创建一个图像我已经成功创建了一个包含 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])

但这导致了同样的错误

4

1 回答 1

0

看来您正在完全压平标签(yout),即您正在丢失批次尺寸。如果你原来的你的形状是你应该重塑它的形状等于:(3200, 30, 20)(3200, 30*20)(3200, 600)

yout = numpy.reshape((3200, 600))

然后它应该工作

注意 但是建议的修复只消除了错误。我看到你的方法有很多问题。对于您尝试执行的任务(获取图像作为输出),您不能将sparse_categorical_crossentropy其用作损失和accuracy指标。您应该改用“mse”或“mae”。

于 2020-03-22T11:51:56.813 回答