【问题标题】:Input shape and Keras输入形状和 Keras
【发布时间】:2019-01-03 19:26:49
【问题描述】:

我有一组训练数据,其中每个输入都是一个长度为 138 的向量。我有 519 个这些向量,批量大小为 519。这些不是图像,只是实数值。

我正在尝试从 2 层密集 Keras 模型开始:

model = keras.Sequential([
    layers.Dense(200, activation=tf.nn.relu, input_shape=[138]),
    layers.Dense(200, activation=tf.nn.relu),
    layers.Dense(1)
])

当我构建模型时出现以下错误:

Error when checking input: expected dense_27_input to have shape (138,) but got array with shape (519,).

在 Keras 中,我在哪里区分批量大小和输入特征的数量? layers.Dense() 似乎假设我的输入是在行和列中。

【问题讨论】:

  • 你能展示一下你在模型中输入向量的指令吗?
  • 输入数组的形状是什么,(138, 519)(519, 138)
  • 输入数组的形状为 138x519。我将输入向量放入模型的指令是:example_batch = normed_train_data[:10] example_result = model.predict(example_batch) where def norm(x): return (x - train_stats['mean']) / train_stats[' std'] normed_train_data = norm(train_dataset)。我一直在关注这个例子:tensorflow.org/tutorials/keras/basic_regression

标签: python machine-learning keras training-data keras-layer


【解决方案1】:

Keras 期望第一个轴是批处理轴。因此,如果您有 519 个训练样本,其中每个样本都是长度为 138 的向量,那么您传递给fit 方法的数组必须具有(519, 138) 的形状。因此,如果当前训练数据数组的形状为(138, 519),只需将其转置以使形状一致:

import numpy as np

train_data = np.transpose(train_data)

【讨论】:

    猜你喜欢
    • 2018-02-16
    • 2020-06-10
    • 2017-08-14
    • 2018-11-21
    • 1970-01-01
    • 2016-12-31
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    相关资源
    最近更新 更多