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

Deb*_*ney 8 regression deep-learning conv-neural-network keras tensorflow

这是一个回归问题,我想从每个尺寸为 224 x 224 的图像生成 5 个浮点值。因此我在最后一层使用具有 5 个节点的全连接网络。但在 keras 中这样做会出现以下错误:

\n
import keras, os\nimport numpy as np\nfrom tensorflow.keras.models import Model\nfrom tensorflow.keras.optimizers import Adam\nfrom tensorflow.keras.layers import Dense, GlobalAveragePooling2D\nfrom tensorflow.keras.applications.inception_v3 import InceptionV3\n\n## data_list = list of four 224x224 numpy arrays\n\ninception = InceptionV3(weights='imagenet', include_top=False)\nx = inception.output\nx = GlobalAveragePooling2D()(x)\nx = Dense(1024, activation='relu')(x)\npredictions = Dense(5, activation='relu')(x)\n\ny = [np.random.random(5),np.random.random(5),np.random.random(5),np.random.random(5)]\n\nmodel = Model(inputs=inception.input, outputs=predictions)\nopt = Adam(lr=0.001)\nmodel.compile(optimizer=opt, loss="mae")\nmodel.fit(data_list, y, verbose=0, epochs=100)\n
Run Code Online (Sandbox Code Playgroud)\n

错误:

\n
\n

ValueError: 数据基数不明确:
\n\xc2\xa0\xc2\xa0\xc2\xa0\xc2\xa0 x 大小: 224, 224, 224, 224
\n\xc2\xa0\xc2\xa0\xc2\xa0\ xc2\xa0 y 大小: 5, 5, 5, 5
\n确保所有数组包含相同数量的样本。

\n
\n

可能出了什么问题?

\n

And*_*rey 11

data_list和转换y为 numpy 数组或张量。

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

添加这些行:

import tensorflow as tf

data_list = tf.stack(data_list)
y = tf.stack(y)
Run Code Online (Sandbox Code Playgroud)


cri*_*ari 9

尝试这个

model.fit(np.array(data_list), np.array(y), verbose=0, epochs=100)
Run Code Online (Sandbox Code Playgroud)