【问题标题】:How to fit and evaluate tf.data.dataset with tf.keras at the end of every epoch?如何在每个时代结束时用 tf.keras 拟合和评估 tf.data.dataset?
【发布时间】:2020-01-05 03:50:45
【问题描述】:

当 x 是 tf.data 数据集时,(inputs, targets) 的元组和输入是 {"fea_1": val_1, "fea_2": val_2…}model.fit 等功能的字典 tensorflow/python/keras/engine/training.py 中的函数不支持 validation_datavalidation_split

当 x 是数据集时,不支持validation_splitvalidation_data 仅支持 Numpy 数组或张量。

我可以将takesplit 数据集转至model.fitmodel.evaluate,但它无法在每个epoch 结束时执行验证。

当输入特征是字典时,有没有更好的方法来训练和评估tf.data.dataset

【问题讨论】:

  • 您可以通过validation_data= 参数将tf.data.Dataset 对象提供给model.fit() 方法。不过,您需要指定批量大小。
  • validation_data 参数仅支持 numpy 数组或张量。我的数据集中的特征是一个字典,每个特征都是一个 numpy 数组,用于不同的输入层。
  • validation_data 参数确实支持 tf.data.Dataset。查看文档
  • 我环顾四周。很遗憾,我的功能是字典而不是数组:github.com/tensorflow/tensorflow/blob/master/tensorflow/python/…
  • @ShubhamPnchal 真的……?支持链接是什么??

标签: tensorflow keras tf.keras


【解决方案1】:
X = np.array(X)
y = np.array(y)
model.fit(X, y, batch_size=32, epochs=3, validation_split=0.1)

只需转换

tf.data.Dataset(我的是 Python 列表

Numpy.array

它会工作很棒

【讨论】:

  • 所有这些结果都是一个长度为 1 的数组。[<_LoadDataset shapes: <unknown>, types: tf.int64>]
猜你喜欢
  • 1970-01-01
  • 2018-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
相关资源
最近更新 更多