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



这是一个回归问题,我想从大小为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),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大小:224224224224
y大小:5,5,5
确保所有数组都包含相同数量的样本。

可能出了什么问题?

data_listy转换为numpy数组或张量。

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

添加这些行:

import tensorflow as tf
data_list = tf.stack(data_list)
y = tf.stack(y)

试试这个

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

最新更新