首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >形状不匹配,2D输入和2D标签

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

Stack Overflow用户
提问于 2020-03-22 11:33:17
回答 1查看 156关注 0票数 0

我想要创建一个神经网络,-easy -用一个图像(灰度)创建一个图像,我已经成功地创建了一个由3200个输入和输出(标签)图像示例组成的数据集。(我知道数据集应该更大,但这不是现在的问题)

输入符号具有大小(3200,50,30),因为它是50*30像素,输出yout的大小是(3200,30,20),因为它是30*20像素。

我想尝试一个完全连接的网络(稍后在CNN上)--完全连接的模型看起来是这样的:

代码语言:javascript
复制
# 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,))应该等于逻辑的形状,除了最后一个维度(接收到(32,600))。

我已经试着平复了:

代码语言:javascript
复制
youtflat = yout.transpose(1,0,2).reshape(-1,yout.shape[1]*yout.shape[2])

但这也导致了同样的错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-22 11:51:56

它显示你正在完全地扁平你的标签(You),也就是说,你正在失去批处理维度。如果您原来的yout有一个(3200, 30, 20)的形状,那么您应该重塑它,使其具有(3200, 30*20)的形状,等于(3200, 600)

代码语言:javascript
复制
yout = numpy.reshape((3200, 600))

那它应该能起作用

注释建议的修复,但是只删除错误。不过,我发现你的方法有很多问题。对于要执行的任务(获取图像作为输出),不能使用sparse_categorical_crossentropy作为损失,不能使用accuracy作为度量。你应该用'mse‘或'mae’代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60798805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档