微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ValueError:数据基数不明确确保所有数组包含相同数量的样本

如何解决ValueError:数据基数不明确确保所有数组包含相同数量的样本

我在 Colab 上运行以下代码。这是一个回归问题,我想从每个 224 x 224 的图像生成 5 个浮点值。根据我的理解,为了解决这个问题,我应该在最后一层使用具有 5 个节点的全连接网络。但是在 keras 上这样做给了我下面描述的错误

import keras,os
import numpy as np
from tensorflow.keras.models import Model
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.layers import Dense,GlobalAveragePooling2D
from tensorflow.keras.applications.inception_v3 import InceptionV3

## data_list = list of four 224x224 numpy arrays

inception = InceptionV3(weights='imagenet',include_top=False)
x = inception.output
x = GlobalAveragePooling2D()(x)
x = Dense(1024,activation='relu')(x)
predictions = Dense(5,activation='relu')(x)

y = [np.random.random(5),np.random.random(5),np.random.random(5)]

model = Model(inputs=inception.input,outputs=predictions)
opt = Adam(lr=0.001)
model.compile(optimizer=opt,loss="mae")
model.fit(data_list,y,verbose=0,epochs=100)

错误

ValueError:数据基数不明确:
x 尺寸:224、224、224、224
y 尺寸:5、5、5、5
确保所有数组包含相同数量的样本。

可能出了什么问题?

解决方法

data_listy 转换为 numpy 数组或张量。

在您的代码中,列表被视为四个输入,而您的模型只有一个输入 - https://keras.io/api/models/model_training_apis/

添加这些行:

data_list = tf.stack(data_list)
y = tf.stack(y)
,

试试这个

model.fit(np.array(data_list),np.array(y),verbose=0,epochs=100)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。