形状不匹配,2D 输入和 2D 标签



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

相关内容

  • 没有找到相关文章

最新更新