tf.data.Dataset的输入形状不被model.fit()接受

om

我想通过应用来填充模型的数据tf.data.Dataset

检查了TF 2.0的文档后,我发现该.fit()函数(https://www.tensorflow.org/api_docs/python/tf/keras/Model#fit)接受:

x-一个tf.data数据集。应该返回(输入,目标)或(输入,目标,sample_weights)的元组。

因此,我编写了以下概念验证代码:

from sklearn.datasets import make_blobs
import tensorflow as tf
from tensorflow.keras import Model, Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.metrics import Accuracy, AUC

X, Y = make_blobs(n_samples=500, n_features=2, cluster_std=3.0, random_state=1)

def define_model():
    model = Sequential()
    model.add(Dense(units=1, activation="sigmoid", input_shape=(2,)))
    model.compile(optimizer="adam", loss="binary_crossentropy", metrics=[AUC(), Accuracy()])
    return model

model = define_model()

X_ds = tf.data.Dataset.from_tensor_slices(X)
Y_ds = tf.data.Dataset.from_tensor_slices(Y)
dataset = tf.data.Dataset.zip((X_ds, Y_ds))

for elem in dataset.take(1):
    print(type(elem))
    print(elem)

model.fit(x=dataset) #<-- does not work
#model.fit(x=X, y=Y) <-- does work without any problems....

如第二条评论中所述,不适用的代码tf.data.Dataset可以正常工作。

但是,当应用数据集对象时,出现以下错误消息:

<class 'tuple'>
(<tf.Tensor: shape=(2,), dtype=float64, numpy=array([-10.42729974,  -0.85439721])>, <tf.Tensor: shape=(), dtype=int64, numpy=1>)
... other output here...
ValueError: Error when checking input: expected dense_19_input to have
shape (2,) but got array with shape (1,)

根据我对文档的理解,我构建的数据集应该恰好是fit方法期望的元组对象。

我不明白此错误消息。

我在这里做错了什么?

Jdehesa

当您将数据集传递给时fit,预计它将直接生成批次,而不是单个示例。您只需要在训练之前对数据集进行批处理。

dataset = dataset.batch(batch_size)
model.fit(x=dataset)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用TF.Keras中的Custom model.fit进行梯度累积?

来自分类Dev

如何为接受各种形状的多个输入的`tf.keras`模型创建`tf.data.Dataset`?

来自分类Dev

tf.data.Dataset.map()用于由多个切片组成的数据集

来自分类Dev

如何获取tf.data.Dataset的长度(data_size / batch_size)?

来自分类Dev

tf.data.Dataset.take()返回随机样本吗?

来自分类Dev

当调用tf.keras.model.fit时,Tensorflow 2.0不会迭代整个数据集

来自分类Dev

tf.data.dataset:如何为保证输出某些形状的数据集(形状未定义)分配形状?

来自分类Dev

在TF 2.0中将tf.Tensor转换为tf.data.Dataset.map中的numpy数组(图形模式)

来自分类Dev

从.tfrecord到tf.data.Dataset到tf.keras.model.fit

来自分类Dev

如何在tf.data.Dataset生成器中使用tf.keras模型?

来自分类Dev

如何在使用@ tf.function装饰的函数中的tf.data.Dataset上使用for循环来操纵和返回tf.Variable?

来自分类Dev

Tensorflow 2.0:在多输入场景中构造tf.data.Dataset输出的最佳方法

来自分类Dev

tf.data.Dataset:不得为给定的输入类型指定`batch_size`参数

来自分类Dev

tf.data.Dataset在除PrefetchDataset之外的CPU上运行。

来自分类Dev

如何在TF 2中使用带有自定义函数的tf.data.Dataset.interleave()?

来自分类Dev

输入管道带有keras.utils.Sequence对象还是tf.data.Dataset?

来自分类Dev

使用tf.data.Dataset训练DL模型

来自分类Dev

形状在tf.data.Dataset.from_tensor_slices的最后记录中不兼容

来自分类Dev

tf model.fit()中的batch_size与tf.data.Dataset中的batch_size

来自分类Dev

Numpy 4D数组到tf.data.dataset

来自分类Dev

TF2-GradientTape与Model.fit()-为什么GradientTape不起作用?

来自分类Dev

使用tf.data.Dataset的“ layer sequence_1的输入0与该层不兼容”

来自分类Dev

tf.data.Dataset:不得为给定的输入类型指定`batch_size`参数

来自分类Dev

使用 tf.data.Dataset 评估每 N 步

来自分类Dev

tf.keras.Model.fit 不训练模型

来自分类Dev

如何只通过 tf.data.dataset 一次?

来自分类Dev

来自输入的数据不被接受为参数

来自分类Dev

使用 model.fit() InvalidArgumentError 训练自定义 tf.keras.model

来自分类Dev

已解决:如何将 tf.gradients 与 tf.data.dataset 和 keras 模型结合起来

Related 相关文章

  1. 1

    使用TF.Keras中的Custom model.fit进行梯度累积?

  2. 2

    如何为接受各种形状的多个输入的`tf.keras`模型创建`tf.data.Dataset`?

  3. 3

    tf.data.Dataset.map()用于由多个切片组成的数据集

  4. 4

    如何获取tf.data.Dataset的长度(data_size / batch_size)?

  5. 5

    tf.data.Dataset.take()返回随机样本吗?

  6. 6

    当调用tf.keras.model.fit时,Tensorflow 2.0不会迭代整个数据集

  7. 7

    tf.data.dataset:如何为保证输出某些形状的数据集(形状未定义)分配形状?

  8. 8

    在TF 2.0中将tf.Tensor转换为tf.data.Dataset.map中的numpy数组(图形模式)

  9. 9

    从.tfrecord到tf.data.Dataset到tf.keras.model.fit

  10. 10

    如何在tf.data.Dataset生成器中使用tf.keras模型?

  11. 11

    如何在使用@ tf.function装饰的函数中的tf.data.Dataset上使用for循环来操纵和返回tf.Variable?

  12. 12

    Tensorflow 2.0:在多输入场景中构造tf.data.Dataset输出的最佳方法

  13. 13

    tf.data.Dataset:不得为给定的输入类型指定`batch_size`参数

  14. 14

    tf.data.Dataset在除PrefetchDataset之外的CPU上运行。

  15. 15

    如何在TF 2中使用带有自定义函数的tf.data.Dataset.interleave()?

  16. 16

    输入管道带有keras.utils.Sequence对象还是tf.data.Dataset?

  17. 17

    使用tf.data.Dataset训练DL模型

  18. 18

    形状在tf.data.Dataset.from_tensor_slices的最后记录中不兼容

  19. 19

    tf model.fit()中的batch_size与tf.data.Dataset中的batch_size

  20. 20

    Numpy 4D数组到tf.data.dataset

  21. 21

    TF2-GradientTape与Model.fit()-为什么GradientTape不起作用?

  22. 22

    使用tf.data.Dataset的“ layer sequence_1的输入0与该层不兼容”

  23. 23

    tf.data.Dataset:不得为给定的输入类型指定`batch_size`参数

  24. 24

    使用 tf.data.Dataset 评估每 N 步

  25. 25

    tf.keras.Model.fit 不训练模型

  26. 26

    如何只通过 tf.data.dataset 一次?

  27. 27

    来自输入的数据不被接受为参数

  28. 28

    使用 model.fit() InvalidArgumentError 训练自定义 tf.keras.model

  29. 29

    已解决:如何将 tf.gradients 与 tf.data.dataset 和 keras 模型结合起来

热门标签

归档