图层的输入/输出数据的尺寸不一致

时间:2019-09-10 15:32:19

标签: keras keras-layer

我正在学习Keras,所以我做了一些简单的伪代码,无法理解如何对密集层进行尺寸标注以匹配输入和输出数据的尺寸。

我的输入数据是一个长度为10的数组,输出是长度为5:

np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
np.array([1, 2, 3, 4, 5]

当我将输入层配置为

input_shape=(10,)

有这行:

    model.add(Dense(units=10, input_shape=(10,),  activation='relu'))

我收到此错误:

  

检查输入时出错:预期density_1_input具有形状(10,),但获得形状为(1,)的数组

如果我想将输入解释为2个长度为5的数组

input_shape=(2,1)

我收到此错误:

  

检查输入时出错:预期density_1_input具有3个维度,但是形状为(10,1)的数组

请注意,在之前的错误声明中,它声明输入数组的形状为(1,),但现在它说该数组的形状为(10,)

当我不更改输入数据时,为什么将输入形状识别为其他形状?

(1,)暗示input_shape应该描述输入数据的维数,但是第二个错误暗示(10,)描述数据的长度。

我在这里阅读了文档:https://keras.io/layers/core/,但是重要的参数input_shape没有文档

import sys
import numpy as np

def DataGenerator():
    while True:
        yield (np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]),
               np.array([1, 2, 3, 4, 5]) )

def main():
    import tensorflow as tf
    import keras as K
    from keras.models import Sequential  


    model = Sequential()

    from keras.layers import Dense
    #imput layer size 10
    model.add(Dense(units=10, input_shape=(1,),  activation='relu'))
    #Output layer size 5
    model.add(Dense(units=5, activation='sigmoid',))

    model.compile( optimizer='adam' , loss='mean_squared_error')

    model.summary()

    model.fit_generator(DataGenerator(),
                        steps_per_epoch=10000, epochs=10)
    Print ("Ok")


if __name__ == "__main__":
    main()

该代码似乎可以使用

input_shape=(1,)

但它会在最后一层引发此错误:

  

检查目标时出错:预期密集_2的形状为(5,),但数组的形状为(1,)

我找不到有关如何描述输出层以匹配数据的文档。我以为,由于最后一层产生5个数字,所以会自动对长度为5的数组供稿进行检查。

它在哪里记录或解释?

0 个答案:

没有答案