呼叫模型.拟合不同形状输入的Keras?

2024-04-16 12:09:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python和Keras创建了一个CNN,它将不同长度的2D输入压缩成一个输出。所有图像的高度均为80像素,但长度不同,例如形状(80,长度为_image_i,2),其中2是颜色通道的数量。在

我有5000个图像,在numpy中训练数据数组X的形状是(5000,1),数组有dtype对象。这是因为不可能在单个numpy数组中存储具有不同形状的内容。列表中的每个对象都有一个形状(80,长度为图像的长度)。在

当我打电话给模型.拟合(X,y)函数的序列模型,我得到以下错误:

    ValueError: Error when checking input: expected conv2d_1_input to have 4 
    dimensions, but got array with shape (5000, 1)

将numpy数组转换为Python numpy数组列表也不起作用:

^{pr2}$

对数据进行零填充或转换以将所有图像转换为同一形状不是一个选项。在

我现在的问题是:如何调用模型.拟合当我的数据没有固定形状时(X,y)函数?在

提前谢谢你!在

编辑:请注意,我的网络架构没有问题(因为我没有使用密集层)。我的问题是我不能调用fit函数,因为numpy数组的形状有问题。 我的模型是这个网络的复制品:http://machine-listening.eecs.qmul.ac.uk/wp-content/uploads/sites/26/2017/01/sparrow.pdf


Tags: 数据对象函数模型图像网络numpy列表
1条回答
网友
1楼 · 发布于 2024-04-16 12:09:48

你需要传递“numpyarrays”来适应,类型为“float”。这是唯一的可能。在

因此,您可能需要将一批相同长度的图像分组,或单独训练每个样本:

for image, output in zip(images,outputs):
    model.train_on_batch(image.reshape((1,80,-1,2), outputs.reshape((1,)+outputs.shape, ....) 

相关问题 更多 >