如何修正keras模型中的输入形状误差

如何修正keras模型中的输入形状误差,keras,deep-learning,semantic-segmentation,Keras,Deep Learning,Semantic Segmentation,我尝试使用本教程执行语义分段: 我对他的笔记本做了一点修改,但我成功地训练出了50%准确率的模型 我已经尝试过重塑输入数组,但它不起作用。 代码如下: test=X_列[0] 测试形状 >>> (480, 640, 4) 并行_模型预测(试验) >>>ValueError:检查输入时出错:预期输入_3有4个维度,但得到了具有形状的数组(480、640、4) 模型如下: def UNet(): f=[16,32,64,128,256] 输入=keras.layers.Input((480640,

我尝试使用本教程执行语义分段: 我对他的笔记本做了一点修改,但我成功地训练出了50%准确率的模型

我已经尝试过重塑输入数组,但它不起作用。 代码如下:

test=X_列[0]
测试形状
>>> (480, 640, 4)
并行_模型预测(试验)
>>>ValueError:检查输入时出错:预期输入_3有4个维度,但得到了具有形状的数组(480、640、4)
模型如下:

def UNet():
f=[16,32,64,128,256]
输入=keras.layers.Input((480640,4))
p0=输入
c1,p1=向下_块(p0,f[0])#128->64
c2,p2=向下_块(p1,f[1])#64->32
c3,p3=向下_块(p2,f[2])#32->16
c4,p4=向下_块(p3,f[3])#16->8
bn=瓶颈(p4,f[4])
u1=上_区块(bn,c4,f[3])#8->16
u2=上向块(u1,c3,f[2])16->32
u3=上_块(u2,c2,f[1])#32->64
u4=上_块(u3,c1,f[0])#64->128
输出=keras.layers.Conv2D(4,(1,1),padding=“same”,activation=“sigmoid”)(u4)
模型=keras.models.model(输入、输出)
回归模型
我知道这是一个noob错误,但我真的想解决它

Keras使用“批量”,从不使用单个图像

这意味着它需要4个维度
(批量大小,480640,4)

test =  X_train[0]
test.shape
>>> (480, 640, 4)
test = test.reshape((-1, 480, 640, 4))
test.shape
>>> (1, 480, 640, 4)
如果要使用单个图像进行预测,则需要具有shape
(1480640,4)
的输入数组

test =  X_train[0]
test.shape
>>> (480, 640, 4)
test = test.reshape((-1, 480, 640, 4))
test.shape
>>> (1, 480, 640, 4)

现在您可以
parallel\u model.predict(test)

predict需要成批输入,而不是单个输入。因此,尝试将样本数添加为一个维度,即1,并相应地重塑