【问题标题】:AssertionError when using MirroredStrategy: isinstance(x, dataset_ops.DatasetV2)使用 MirroredStrategy 时出现 AssertionError:isinstance(x, dataset_ops.DatasetV2)
【发布时间】:2019-10-20 21:59:21
【问题描述】:

我正在尝试使用 MirroredStrategy 来拟合我使用两个 Titan Xp GPU 的顺序模型。我在 ubuntu 16.04 上使用 tensorflow 2.0 alpha。

我成功运行了 tensorflow 文档中的代码 sn-p:

from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf

mirrored_strategy = tf.distribute.MirroredStrategy()
  with mirrored_strategy.scope():
  model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=(1,))])
  model.compile(loss='mse', optimizer='sgd')

dataset = tf.data.Dataset.from_tensors(([1.], [1.])).repeat(100).batch(10)
model.fit(dataset, epochs=2)
model.evaluate(dataset)

但是,当我尝试对我的数据进行训练时,这是一个稀疏的形状矩阵(使用 adam 优化器和二元交叉熵):

Shape X_train: (91422, 65545)
Shape y_train: (91422, 1)

我在 _distribution_standardize_user_data 中收到断言错误

assert isinstance(x, dataset_ops.DatasetV2)

TensorFlow 代码中,training.py 中的第 2166 行似乎导致了此断言错误。

有人可以向我解释我的数据可能存在什么问题吗?

【问题讨论】:

    标签: python tensorflow gpu assertion


    【解决方案1】:

    我在使用 dataset= strategy.experimental_distribute_dataset(train_dataset)model.fit(dataset) 时遇到了类似的错误。

    我删除strategy.experimental_distribute_dataset 后。它工作正常。它类似于TF document,他们说keras.Model.fit() 自动处理所有事情,只有当我们想使用tf.GradientTape() 进行定制训练时,我们才需要手动分发数据集。

    您可以通过offical tutorial of MNIST了解更多信息

    【讨论】:

      【解决方案2】:

      似乎您将数据集输入 model.fit,model.fit 期待一个 numpy.ndarray。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-23
        • 2020-08-15
        • 2020-11-13
        • 2011-03-21
        • 2016-04-11
        • 1970-01-01
        相关资源
        最近更新 更多