AttributeError:“ ShuffleDataset”对象没有属性“ output_shapes”-在遵循TF教程时

时间:2019-04-26 06:45:49

标签: python tensorflow output shapes

我一直在他们网站上浏览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'

2 个答案:

答案 0 :(得分:0)

尝试更换

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

答案 1 :(得分:0)

替换为

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))