【问题标题】:Incompatible input_shape in deep learning using keras使用 keras 进行深度学习的 input_shape 不兼容
【发布时间】:2021-04-13 06:09:56
【问题描述】:

我正在使用 IMDB 电影评论数据集开始我的深度学习之旅。我不确定如何加载训练数据和指定 input_shape。

(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

如果我理解正确的话,有来自不同电影的 25000 条评论,并且单词被编码为整数列表。

train_data.shape
(25000,)
  1. 由于每条评论都有不同的长度,如何将这些数据存储在矩阵中(即 25,000 行但长度不同的列)?

    model = models.Sequential()

    model.add(layers.Dense(16, activation='relu', input_shape=(10000,)))

    model.add(layers.Dense(16, activation='relu', input_shape=(16,)))

    model.add(layers.Dense(1, activation='sigmoid', input_shape=(16,)))

  2. 使用 one-hot 编码将输入重新整形为 (25000,10000) 后,为什么 input_shape 的第一个参数不是 25000(样本数)而不是 10000,因为 Dense 层将根据 relu(dot(w, inputs) + b) 计算输出? ==> (25000, 10000) dot (10000, 16) = (25000, 16) 为什么我们不像 Tensorflow 核心那样将 input_shape 指定为 [None, 10000]?

【问题讨论】:

    标签: tensorflow keras tensorflow-datasets tf.keras


    【解决方案1】:

    您可以使用 keras pad_sequence 进行填充

    data = pad_sequences(data, maxlen=max_length, padding='post')
    

    我建议你也使用嵌入层

    model = Sequential()
    model.add(Embedding(num_words, 32, input_length=maxlen))
    

    【讨论】:

      猜你喜欢
      • 2018-10-25
      • 1970-01-01
      • 2020-12-01
      • 2019-06-16
      • 2018-10-19
      • 2017-11-08
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      相关资源
      最近更新 更多