【问题标题】:Dimensions of locally connected layers in KerasKeras 中局部连接层的尺寸
【发布时间】:2018-09-19 12:16:19
【问题描述】:

我正在尝试使用 LocallyConnected1D 层(而不是 Dense)构建一个自动编码器,但在理解这两种层类型的不同之处时遇到了很多麻烦——尤其是在输出维度方面。

model = Sequential()
model.add(Reshape(input_shape=(input_size,), target_shape=(input_size,1))
model.add(LocallyConnected1D(encoded_size, kernel_size)
model.add(LocallyConnected1D(input_size, kernal_size_2, name="decoded_layer"))

这个模型编译得很好,但是当我去训练它时......

model.fit(x_train, x_train,
         epochs=epochs,
         batch_size=batch_size,
         shuffle=True,
         validation_data=(x_test, x_test))

其中 x_trainx_test 分别是形状为 (60000, 784) 和 (10000, 784) 的 numpy 数组。我在这一行收到以下错误:

ValueError: Error when checking target: expected decoded_layer to have 3 dimensions, but got array with shape (60000, 784)

进入decoded_layer 的张量的形状不应该是 (60000, encoded_size, 1) 吗?

【问题讨论】:

    标签: python keras autoencoder


    【解决方案1】:

    首先,您不必将None 作为输入形状中的第一个维度。 Keras 自动假设存在另一个输入维度,即样本数。

    其次,LocallyConnected1D 需要 3D 输入。这意味着你的 input_shape 应该是 (int, int) 的形式,而 keras 推断的形状是 (None, int, int)

    一个例子:

    model = Sequential()
    model.add(LocallyConnected1D(64, 3, input_shape=(10,10))) #takes a 10 by 10 array for each sample
    model.add(LocallyConnected1D(32, 3))
    

    如果您的数据形状不正确,您始终可以使用Reshape() 层。假设您的输入是 (batch_size, 50) 的形状,因此每个样本都是 50 个元素的一维向量:

    model = Sequential()
    model.add(Reshape(input_shape=(50,), target_shape=(50,1)) #makes array 3D
    model.add(LocallyConnected1D(64, 3))
    model.add(LocallyConnected1D(32, 3))
    

    【讨论】:

    • 但是如果我只有一个要编码的一维数组怎么办?例如,如果我有一个n 长度的一维数组:[0, 0, 1, 0, 2, ...],我会放LocallyConnected1D(64, 3, input_shape=(1, n))吗?
    • 修复了它。再次感谢 Primusa!
    • 我很乐意提供帮助:)
    • 最后一层的输入好像有问题。该模型将编译,但是当我尝试将数据拟合到它时,它给了我以下错误:Error when checking target: expected decoded_layer to have 3 dimensions, but got array with shape (60000, 784)(decoded_layer 是最后一层)。我正在向.fit 函数传递一个大小为 (60000, 784) 的 numpy 数组——MNIST 数据集。
    • 我会在这里勉强说添加一个重塑层作为模型的第一层:model.add(Reshape(input_shape=(784,), target_shape=(784,1))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2021-01-18
    • 2019-08-30
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多