【问题标题】:Why is maxlen set to 256 in Tensorflow text classification tutorial?为什么Tensorflow文本分类教程中maxlen设置为256?
【发布时间】:2018-08-29 21:48:18
【问题描述】:

参考::https://www.tensorflow.org/tutorials/keras/basic_text_classification

train_data = keras.preprocessing.sequence.pad_sequences(train_data,
                                                    value=word_index["<PAD>"],
                                                    padding='post',
                                                    maxlen=256)

test_data = keras.preprocessing.sequence.pad_sequences(test_data,
                                                   value=word_index["<PAD>"],
                                                   padding='post',
                                                   maxlen=256)

在上面的 sn-p 中,我有点困惑为什么将 maxlen 设置为 256。我通读了 Keras 文档,它说它会截断任何长于“maxlen”的序列。为什么我们需要截断长度?只是机器学习的新手:(

【问题讨论】:

    标签: tensorflow machine-learning


    【解决方案1】:

    在数据集中,会有n个训练样本。在 NLP 的上下文中,这些训练样本不能保证是固定长度的。有些可能长度为 1024,有些可能长度为 24,依此类推。

    示例中使用的模型需要数据样本具有固定长度。为了确保所有样本至少具有最小长度,它们将被填充。这里使用了后填充。

    因此,填充使所有长度为 24、124 等的数据样本,并将其填充为所需的最小长度。这里需要的最小长度为 256。因此长度小于 256 的数据样本将被填充以使其长度为 256。

    max_len 可以根据很多因素来确定,这可能是由于资源限制,也可能是因为只有前 256 个字符与操作相关。

    【讨论】:

      【解决方案2】:

      256 是为示例选择的一个数字,因为它提供了最佳精度。对于可变长度数据,数据长度与准确性之间的关系是钟形曲线。数据太少,准确率低;另一方面,如果数据的长度太长,加上一堆空值,就会影响准确率。

      性能也是一个因素,数据越多,训练模型所需的时间就越长。通过示例,您可以尝试不同的 max_len 值并观察结果:

      maxlen Accuracy  Time
      64      82%       0m20.817s         
      128     85%       0m26.294s
      256     87%       0m37.068s 
      512     86%       0m57.468s 
      None    79%       3m42.411s
      

      最长的元素是 2494 个整数。所以上表中的 None 将是 maxlen=2494

      时间是使用 Linux time 命令中的实际值收集的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-02
        • 2017-12-06
        • 1970-01-01
        • 2018-11-27
        • 2017-11-18
        • 2020-06-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多