密集层中的 Keras 错误,预期 4 维得到具有形状的数组 (1024,2)

帕特里克丹梅里

我正在尝试使用 Keras 和启用 GPU 的 Tensorflow 后端来训练 3 层密集神经网络模型。

我拥有的数据集是 400 万张 20x40 像素的图像,我将这些图像放置在目录中,并带有它们所属类别的名称。

由于数据量很大,我不能将其全部加载到 RAM 中并将其提供给我的模型,因此我认为使用Keras 的 ImageDataGenerator,特别是函数 flow_from_directory() 可以解决问题。这会产生一个 (x, y) 元组,其中 x 是图像的 numpy 数组,y 是图像的标签。

我希望模型知道访问作为模型输入的 numpy 数组,因此我将输入形状设置为: (None,20,40,3) 其中 None 是批量大小,20 和 40 是大小图像和 3 是图像中的通道数。然而,这不起作用,因为当我尝试训练我的模型时,我不断收到错误:ValueError:检查目标时出错:预期密集_3 有 4 个维度,但得到了形状为 (1024, 2) 的数组

我知道原因是它从 flow_from_directoy 获取元组,我想我可以更改输入形状以匹配,但是,我担心这会使我的模型无用,因为我将使用图像进行预测而不是预先分类元组。所以我的问题是,我怎样才能让 flow_from_directory 将图像提供给我的模型,并且只使用元组来验证它的训练?我在这里误解了什么吗?

作为参考,这是我的代码:

from keras.models import Model
from keras.layers import *
from keras.preprocessing.image import ImageDataGenerator
from keras.callbacks import TensorBoard

# Prepare the Image Data Generator.
train_datagen = ImageDataGenerator()
test_datagen = ImageDataGenerator()

train_generator = train_datagen.flow_from_directory(
    '/path/to/train_data/',
    target_size=(20, 40),
    batch_size=1024,
)

test_generator = test_datagen.flow_from_directory(
    '/path/to/test_data/',
    target_size=(20, 40),
    batch_size=1024,
)

# Define input tensor.
input_t = Input(shape=(20,40,3))

# Now create the layers and pass the input tensor to it.
hidden_1 = Dense(units=32, activation='relu')(input_t)
hidden_2 = Dense(units=16)(hidden_1)
prediction = Dense(units=1)(hidden_2)

# Now put it all together and create the model.
model = Model(inputs=input_t, outputs=prediction)
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])

# Prepare Tensorboard callback and start training.
tensorboard = TensorBoard(log_dir='./graph', histogram_freq=0, write_graph=True, write_images=True)
print(test_generator)
model.fit_generator(
    train_generator,
    steps_per_epoch=2000,
    epochs=100,
    validation_data=test_generator,
    validation_steps=800,
    callbacks=[tensorboard]
)

# Save trained model.
model.save('trained_model.h5')
小的

对于 Dense 层,您的输入形状是错误的。

密集层期望输入形状(无,长度)。

你要么需要重塑你的输入,使它们成为向量:

imageBatch=imageBatch.reshape((imageBatch.shape[0],20*40*3))

或者使用卷积层,它期望像tensorflow那样的输入形状类型 (None,nRows,nCols,nChannels)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

keras中不兼容的密集层错误

来自分类Dev

Keras Digit数据集错误:预期conv2d_input具有4维,但数组的形状为(60000,28,28)

来自分类Dev

ValueError:检查目标时出错:预期density_3具有形状(1,),但数组形状为(2,)角

来自分类Dev

预期density_8具有形状(2,),但具有形状(1,)的数组

来自分类Dev

Keras检查输入时出错:预期input_4具有形状(299、299、3),但数组具有形状(64、64、3)

来自分类Dev

检查输入时出错:预期conv2d_17_input具有4个维,但数组的形状为(28,28,1)

来自分类Dev

检查目标时出错:预期density_21具有2维,但数组的形状为(2300,4,54)

来自分类Dev

Tensorflow / keras错误:ValueError:检查输入时出错:预期的lstm_input具有3个维,但数组的形状为(4012,42)

来自分类Dev

ValueError:检查输入时出错:预期conv2d_input具有4维,但数组的形状为(None,1)

来自分类Dev

检查目标时出错:预期activation_5具有形状(1,),但数组的形状为(2,)

来自分类Dev

Python神经网络-检查输入时出错:预期conv2d_1_input具有4维,但数组的形状为(700,128,33)

来自分类Dev

Keras中Vanilla RNN的致密层的形状错误?

来自分类Dev

ValueError:检查模型目标时出错:预期卷积2d_2具有形状(无、26、26、64)但得到形状为(250、227、227、1)的数组

来自分类Dev

ValueError:检查模型目标时出错:预期 activation_2 具有形状 (None, 761, 1) 但得到形状为 (1, 779, 1) 的数组

来自分类Dev

Python-Tensorflow-LSTM-ValueError:检查模型目标时出错:预期dense_16具有形状(无,100)但得到形状为(16、2)的数组

来自分类Dev

简单的机器学习算法不起作用:ValueError:检查输入时出错:预期dense_4_input具有形状(无,5)但得到形状为(5,1)的数组

来自分类Dev

MobileNet ValueError:检查目标时出错:预期dense_1有4维,但得到形状为(24, 2)的数组

来自分类Dev

python 3.x Keras ValueError:检查目标时出错:预期seq_input具有形状(无,2)但得到形状为(16,1)的数组

来自分类Dev

ValueError:检查目标时出错:预期 activation_6 具有形状(无,2)但得到形状为(5760,1)的数组

来自分类Dev

Keras LSTM 多维输出错误 — 预期 time_distributed_17 具有 3 维,但得到了形状为 (1824, 3) 的数组

来自分类Dev

TensorFlow/Keras - 预期 global_average_pooling2d_1_input 具有形状 (1, 1, 2048) 但得到形状为 (7, 7, 2048) 的数组

来自分类Dev

Keras ValueError:检查目标时出错:预期dense_15具有3维,但得到了形状为(301390, 8)的数组

来自分类Dev

ValueError:检查目标时出错:预期输出具有形状 (1,) 但得到形状为 (2,) 的数组

来自分类Dev

检查输入时出错:预期 conv2d_1_input 具有形状 (64, 64, 3) 但得到形状为 (64, 64, 4) 的数组

来自分类Dev

检查目标时出错:预期dense_8 具有形状(2,) 但得到形状为(1,) 的数组

来自分类Dev

ValueError:检查目标时出错:预期dense_2具有形状(1,)但得到形状为(14,)的数组

来自分类Dev

检查目标时:预期dense_2 具有形状(1,) 但得到形状为(2,) 的数组

来自分类Dev

值错误:预期 conv2d_21_input 具有形状 (224, 224, 3)

来自分类Dev

ValueError:检查输入时出错:预期 conv2d_9_input 具有形状 (64, 64, 3) 但得到形状为 (32, 32, 1) 的数组

Related 相关文章

  1. 1

    keras中不兼容的密集层错误

  2. 2

    Keras Digit数据集错误:预期conv2d_input具有4维,但数组的形状为(60000,28,28)

  3. 3

    ValueError:检查目标时出错:预期density_3具有形状(1,),但数组形状为(2,)角

  4. 4

    预期density_8具有形状(2,),但具有形状(1,)的数组

  5. 5

    Keras检查输入时出错:预期input_4具有形状(299、299、3),但数组具有形状(64、64、3)

  6. 6

    检查输入时出错:预期conv2d_17_input具有4个维,但数组的形状为(28,28,1)

  7. 7

    检查目标时出错:预期density_21具有2维,但数组的形状为(2300,4,54)

  8. 8

    Tensorflow / keras错误:ValueError:检查输入时出错:预期的lstm_input具有3个维,但数组的形状为(4012,42)

  9. 9

    ValueError:检查输入时出错:预期conv2d_input具有4维,但数组的形状为(None,1)

  10. 10

    检查目标时出错:预期activation_5具有形状(1,),但数组的形状为(2,)

  11. 11

    Python神经网络-检查输入时出错:预期conv2d_1_input具有4维,但数组的形状为(700,128,33)

  12. 12

    Keras中Vanilla RNN的致密层的形状错误?

  13. 13

    ValueError:检查模型目标时出错:预期卷积2d_2具有形状(无、26、26、64)但得到形状为(250、227、227、1)的数组

  14. 14

    ValueError:检查模型目标时出错:预期 activation_2 具有形状 (None, 761, 1) 但得到形状为 (1, 779, 1) 的数组

  15. 15

    Python-Tensorflow-LSTM-ValueError:检查模型目标时出错:预期dense_16具有形状(无,100)但得到形状为(16、2)的数组

  16. 16

    简单的机器学习算法不起作用:ValueError:检查输入时出错:预期dense_4_input具有形状(无,5)但得到形状为(5,1)的数组

  17. 17

    MobileNet ValueError:检查目标时出错:预期dense_1有4维,但得到形状为(24, 2)的数组

  18. 18

    python 3.x Keras ValueError:检查目标时出错:预期seq_input具有形状(无,2)但得到形状为(16,1)的数组

  19. 19

    ValueError:检查目标时出错:预期 activation_6 具有形状(无,2)但得到形状为(5760,1)的数组

  20. 20

    Keras LSTM 多维输出错误 — 预期 time_distributed_17 具有 3 维,但得到了形状为 (1824, 3) 的数组

  21. 21

    TensorFlow/Keras - 预期 global_average_pooling2d_1_input 具有形状 (1, 1, 2048) 但得到形状为 (7, 7, 2048) 的数组

  22. 22

    Keras ValueError:检查目标时出错:预期dense_15具有3维,但得到了形状为(301390, 8)的数组

  23. 23

    ValueError:检查目标时出错:预期输出具有形状 (1,) 但得到形状为 (2,) 的数组

  24. 24

    检查输入时出错:预期 conv2d_1_input 具有形状 (64, 64, 3) 但得到形状为 (64, 64, 4) 的数组

  25. 25

    检查目标时出错:预期dense_8 具有形状(2,) 但得到形状为(1,) 的数组

  26. 26

    ValueError:检查目标时出错:预期dense_2具有形状(1,)但得到形状为(14,)的数组

  27. 27

    检查目标时:预期dense_2 具有形状(1,) 但得到形状为(2,) 的数组

  28. 28

    值错误:预期 conv2d_21_input 具有形状 (224, 224, 3)

  29. 29

    ValueError:检查输入时出错:预期 conv2d_9_input 具有形状 (64, 64, 3) 但得到形状为 (32, 32, 1) 的数组

热门标签

归档