【问题标题】:ValueError: Data cardinality is ambiguous. Make sure all arrays contain the same number of samplesValueError:数据基数不明确。确保所有数组包含相同数量的样本
【发布时间】:2023-03-23 16:26:01
【问题描述】:

我在 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),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
确保所有数组都包含相同数量的样本。

可能出了什么问题?

【问题讨论】:

    标签: tensorflow keras deep-learning regression conv-neural-network


    【解决方案1】:

    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)
    

    【讨论】:

    • 你能更好地描述一下吗?应该更改的邮政编码。
    • @MikePone 谢谢,请查看编辑后的答案
    【解决方案2】:

    试试这个

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

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 2022-11-11
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      • 2022-10-07
      • 2021-07-09
      • 2021-09-10
      • 2020-09-26
      相关资源
      最近更新 更多