Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
tensorflow.keras.model.fit无法读取数据集格式的验证数据_Tensorflow_Keras_Deep Learning_Neural Network_Artificial Intelligence - Fatal编程技术网

tensorflow.keras.model.fit无法读取数据集格式的验证数据

tensorflow.keras.model.fit无法读取数据集格式的验证数据,tensorflow,keras,deep-learning,neural-network,artificial-intelligence,Tensorflow,Keras,Deep Learning,Neural Network,Artificial Intelligence,此处的tensorflow教程(参见“训练模型”一节)表明,可以向tf.keras.model.fit提供数据集(数据、标签)。但是,当我将数据集分配给val_数据时,如下图所示,验证数据的损失为0,与培训状态无关(参见下图)。( 这表明,当val_数据以数组[x_val,y_val]的形式而不是元组(x_val,y_val)的形式表示时,就会出现此问题。然而,在我的例子中,我提供了一个数据集,与上面的tensorflow教程完全一样 我使用的是tensorflow 2.1 我的数据集包含结构

此处的tensorflow教程(参见“训练模型”一节)表明,可以向tf.keras.model.fit提供数据集(数据、标签)。但是,当我将数据集分配给val_数据时,如下图所示,验证数据的损失为0,与培训状态无关(参见下图)。(

这表明,当val_数据以数组[x_val,y_val]的形式而不是元组(x_val,y_val)的形式表示时,就会出现此问题。然而,在我的例子中,我提供了一个数据集,与上面的tensorflow教程完全一样

我使用的是tensorflow 2.1

我的数据集包含结构如下所述的元组:

(<tf.Tensor: shape=(batch_size, 128, 128, 3), dtype=uint8, numpy=
array>, <tf.Tensor: shape=(batch_size, 10), dtype=float32, numpy=
array>)
(,)
第一个是图像,第二个是标签(在本例中,每个图像有10个值作为标签)

有人知道我为什么会在历史记录中得到恒定的0验证损失吗?我怎样才能使它工作?-->请参阅下面的更新

更新:
似乎只有当验证批大小不同于培训批大小时,才会出现此问题。我还注意到,对于某些批量大小,验证损失并不完全为零,但仍然接近于零,并且远低于训练损失。如果验证数据集的批量大小设置为等于培训数据集的批量大小,则所有操作都正常工作。我现在想知道为什么会发生这种情况。

我发现了这个问题

我使用的是一个自定义损失函数,它返回对批处理的每个元素计算的损失之和。例如,批量大小为100时,损失函数将返回所有这100个损失的总和。由于我使用的验证数据集的批大小为1(比训练批大小小得多),因此验证的损失比训练数据集的损失小得多


原来如此! :)

尝试将训练数据作为验证数据,将val\u ds作为训练数据输入Hi@Andrey,谢谢你的聪明想法。不幸的是,同样的问题依然存在。训练损失(使用val_ds获得)按预期更改,但验证损失(使用train_ds获得)保持为0。因此,问题不在于数据,而在于tf.keras.model.fit()读取val_数据输入的方式。
(<tf.Tensor: shape=(batch_size, 128, 128, 3), dtype=uint8, numpy=
array>, <tf.Tensor: shape=(batch_size, 10), dtype=float32, numpy=
array>)