使用 MirroredStrategy 时出现 AssertionError:isinstance(x, dataset_ops.DatasetV2)

Posted

技术标签:

【中文标题】使用 MirroredStrategy 时出现 AssertionError:isinstance(x, dataset_ops.DatasetV2)【英文标题】:AssertionError when using MirroredStrategy: 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 行似乎导致了此断言错误。

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

【问题讨论】:

【参考方案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。

【讨论】:

以上是关于使用 MirroredStrategy 时出现 AssertionError:isinstance(x, dataset_ops.DatasetV2)的主要内容,如果未能解决你的问题,请参考以下文章

使用DataContractJsonSerializer发序列化对象时出现的异常

使用 websocket 时出现“TypeError: a float is required”

使用 MappedByteBuffer 时出现 IndexOutOfBoundsException

使用Maven加载项目有Dubbo框架时出现的常见异常情况

使用具有不同优化的 gcc 时出现奇怪的反编译

使用 pandas.read_json 时出现 ValueError