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

时间:2019-06-05 11:33:46

标签: python tensorflow gpu assertion

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

我成功运行了tensorflow文档中的代码片段:

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)

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

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

我在_distribution_standardize_user_data中收到断言错误

assert isinstance(x, dataset_ops.DatasetV2)

在Tensoflow代码中,training.py中的第2166行似乎引起此断言错误。

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

2 个答案:

答案 0 :(得分: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浏览更多信息

答案 1 :(得分:0)

好像您正在将数据集输入到model.fit中,model.fit正在期待numpy.ndarray。