【问题标题】:AttributeError: 'ShuffleDataset' object has no attribute 'output_shapes' - when following TF tutorialAttributeError: 'ShuffleDataset' 对象没有属性 'output_shapes' - 遵循 TF 教程时
【发布时间】:2019-09-15 15:31:56
【问题描述】:

我一直在学习他们网站上的 TensorFlow 教程。在使用 RNN 进行文本分类练习中,我遇到了这个错误。我尝试了一些更改,并且还复制并粘贴了代码以收到相同的错误。有什么建议?谢谢

我尝试在分配 padded_batch 之后对数据集进行洗牌。我可以从文档中看到,Shuffle 没有属性(output_shapes)。我想不出另一种方法。

BUFFER_SIZE = 10000
BATCH_SIZE = 64

train_dataset = train_dataset.shuffle(BUFFER_SIZE)
train_dataset = train_dataset.padded_batch(BATCH_SIZE, train_dataset.output_shapes)

test_dataset = test_dataset.padded_batch(BATCH_SIZE, test_dataset.output_shapes)

收到此错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-7-8a10fa01af19> in <module>()
      3 
      4 train_dataset = train_dataset.shuffle(BUFFER_SIZE)
----> 5 train_dataset = train_dataset.padded_batch(BATCH_SIZE, train_dataset.output_shapes)
      6 
      7 test_dataset = test_dataset.padded_batch(BATCH_SIZE, test_dataset.output_shapes)

AttributeError: 'ShuffleDataset' object has no attribute 'output_shapes'

【问题讨论】:

标签: python tensorflow output shapes


【解决方案1】:

尝试替换

train_dataset = train_dataset.padded_batch(BATCH_SIZE, train_dataset.output_shapes)

train_dataset = train_dataset.padded_batch(BATCH_SIZE, tf.compat.v1.data.get_output_shapes(train_dataset))

这不是问题的一部分,但您也可以一次性编写您的 train_dataset,例如:

train_dataset = (
    train_dataset
    .shuffle(BUFFER_SIZE)
    .padded_batch(BATCH_SIZE, tf.compat.v1.data.get_output_shapes(train_dataset)))

我想我会把它放在那里只是为了提供另一种写作方式;)

此外,就 train_dataset.output_shapes 而言,它已在最新版本的 TensorFlow https://www.tensorflow.org/api_docs/python/tf/data/Dataset#element_spec 中贬值 所以如果你有 TF2,你可以使用 compat.v1 或 ds.element_spec

【讨论】:

    【解决方案2】:

    替换为

    BUFFER_SIZE = 10000
    BATCH_SIZE = 64
    
    train_dataset = train_dataset.shuffle(BUFFER_SIZE)
    train_dataset = train_dataset.padded_batch(BATCH_SIZE, tf.compat.v1.data.get_output_shapes(train_dataset))
    test_dataset = test_dataset.padded_batch(BATCH_SIZE, tf.compat.v1.data.get_output_shapes(test_dataset))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 1970-01-01
      • 2012-12-01
      • 2021-04-19
      • 2021-11-22
      相关资源
      最近更新 更多