首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Keras函数API多输入形状错误

Keras函数API多输入形状错误
EN

Stack Overflow用户
提问于 2020-07-07 09:27:45
回答 1查看 166关注 0票数 0

我的目标是使用CNN浏览一张图片,然后在密集的图层之前添加一组额外的数据。

代码语言:javascript
运行
AI代码解释
复制
picIn = keras.Input(shape=x[0].shape)
conv1 = layers.Conv2D(32,kernel_size=3,padding='same',use_bias=False)(picIn)
batch1 = layers.BatchNormalization()(conv1)
leaky1 = layers.LeakyReLU(alpha=.3)(batch1)
conv2 = layers.Conv2D(32,kernel_size=3,padding='same',use_bias=False)(leaky1)
batch2 = layers.BatchNormalization()(conv2)
leaky2 = layers.LeakyReLU(alpha=.3)(batch2)
cdrop1 = layers.Dropout(.20)(leaky2)
conv3= layers.Conv2D(64,kernel_size=3,padding='same',use_bias=False)(cdrop1)
batch3 = layers.BatchNormalization()(conv3)
leaky3 = layers.LeakyReLU(alpha=.3)(batch3)
conv4 = layers.Conv2D(64,kernel_size=3,padding='same',use_bias=False)(leaky3)
batch4 = layers.BatchNormalization()(conv4)
leaky4 = layers.LeakyReLU(alpha=.3)(batch4)
cdrop2 = layers.Dropout(.20)(leaky4)
flat1 = layers.Flatten()(cdrop2)

rtheta1 = rtheta[trainCut]
rtheta1 = rtheta1.reshape(467526,1)
rtheta2 = rtheta[testCut]
rtheta2 = rtheta2.reshape(82247,1)

ip2 = keras.Input(shape=rtheta1.shape)
flat2 = layers.Flatten()(ip2)

merge = layers.Concatenate()([flat1,flat2])
hidden1 = layers.Dense(512,use_bias=False)(merge)
batch5 = layers.BatchNormalization()(hidden1)
leaky5 = layers.LeakyReLU(alpha=.3)(batch5)
ddrop1 = layers.Dropout(.20)(leaky5)
hidden2 = layers.Dense(512,use_bias=False)(ddrop1)
batch6 = layers.BatchNormalization()(hidden2)
leaky6 = layers.LeakyReLU(alpha=.3)(batch6)
ddrop2 = layers.Dropout(.20)(leaky6)
hidden3 = layers.Dense(512,use_bias=False)(merge)
batch7 = layers.BatchNormalization()(hidden1)
leaky7 = layers.LeakyReLU(alpha=.3)(batch5)
ddrop3 = layers.Dropout(.20)(leaky5)
output = layers.Dense(1)(ddrop3)
model = keras.Model(inputs = [picIn,ip2], outputs = output)

H = model.fit(x =[ x[trainCut],rtheta[trainCut]],y= y[trainCut],batch_size=args.bsize,validation_data=([x[testCut],rtheta[testCut]], y[testCut]),epochs=args.epochs)

我总是得到一个与输入的形状有关的错误。

层稠密的输入0与层不兼容:输入形状的期望轴-1为值473926,但接收到的输入为无形,6401

模型是用形状(None,467526,1)构造的,用于输入张量(“input_2:0”,shape=(None,467526,1),dtype=float32),但是对形状不兼容的输入(None,1,1)调用它。

我搞不懂这里到底该做什么。X列切割是一个大小为(467526,10,10,2)的矩阵,rtheta1是(467526,1),ytraincut也是

验证数据是相同的,只是它是82247而不是467526。

在ip2之后,我尝试过它而没有被压扁,我得到了一个不同的错误,但是我认为核心问题仍然是一样的。

任何帮助都将不胜感激。谢谢!

编辑:数据显然不是正确的形状,但我想出了如何修复它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-11 08:21:49

在将训练数据输入第一个张量之前,您是否确保所有训练数据的形状都是一致的?

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

https://stackoverflow.com/questions/62780751

复制
相关文章

相似问题

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