【问题标题】:Using Tensorflow's numpy_input_fn is throwing "list object has no attribute shape"使用 Tensorflow 的 numpy_input_fn 会抛出“列表对象没有属性形状”
【发布时间】:2018-07-09 16:14:48
【问题描述】:

我正在尝试使用 RNN 创建一个文本分类器。 classifier.train 行抛出错误:

    model_fn = rnn_model
    classifier = tf.estimator.Estimator(model_fn=model_fn)

    # Train.
    train_input_fn = tf.estimator.inputs.numpy_input_fn(
        x={WORDS_FEATURE: x_train},
        y=y_train,
        batch_size=len(x_train),
        num_epochs=None,
        shuffle=True)
    classifier.train(input_fn=train_input_fn, steps=100)

这就是 x_train 的样子:

MAX_DOCUMENT_LENGTH = 50000
...
x_train = depTrain_data[:]
...
vocab_processor = tf.contrib.learn.preprocessing.VocabularyProcessor(MAX_DOCUMENT_LENGTH)
...
x_transform_train = vocab_processor.fit_transform(x_train)
...
x_train = np.array(list(x_transform_train))

这是错误:

我正在使用 Python 3.4 和 Tensorflow 1.4

我知道我需要将列表更改为 np.array 但我不知道在哪里。

【问题讨论】:

    标签: python python-3.x numpy tensorflow rnn


    【解决方案1】:

    我不知道为什么这个问题被否决,这是一个合理的问题。

    答案是您的 y_train 很可能是一个列表,将其转换为 numpy 数组应该可以解决问题。

    【讨论】:

      【解决方案2】:

      tf.estimator.inputs.numpy_input_fn() 函数要求 x 字典中的所有 都是 NumPy 数组。您可以按如下方式执行必要的转换:

      train_input_fn = tf.estimator.inputs.numpy_input_fn(
          x={WORDS_FEATURE: np.array(x_train)},  # Convert `x_train` to a NumPy array.
          y=y_train,
          batch_size=len(x_train),
          num_epochs=None,
          shuffle=True)
      

      请注意,这仅适用于x_train 是一个列表列表,其中每个嵌套列表具有相同的长度。如果没有,您将需要将每个嵌套列表填充到相同的长度。

      【讨论】:

      • 谢谢,但它们都是 NumPy 数组。我更新了它,这样你就可以看到我的 x_train。我也尝试降低 MAX_DOCUMENT_LENGTH 但没有运气
      猜你喜欢
      • 2014-01-27
      • 2020-09-18
      • 2019-08-05
      • 2020-05-18
      • 2021-09-05
      • 2016-05-09
      • 2015-05-07
      • 2017-02-11
      相关资源
      最近更新 更多