gpt4 book ai didi

tensorflow keras评估函数

转载 作者:行者123 更新时间:2023-11-30 09:31:43 25 4
gpt4 key购买 nike

evaluate 函数如何真正工作以及它到底返回什么?

这是文档中的evaluate的接口(interface)定义(来自tf.keras.models.Model)。

evaluate(
x=None,
y=None,
batch_size=None,
verbose=1,
sample_weight=None,
steps=None,
max_queue_size=10,
workers=1,
use_multiprocessing=False
)

文档说该函数返回测试模式下模型的损失值和指标值。

这里有 2 个参数很重要:

batch_size: Integer or None. Number of samples per gradient update. If unspecified, batch_size will default to 32. Do not specify the batch_size if your data is in the form of symbolic tensors, dataset, dataset iterators, generators, or keras.utils.Sequence instances (since they generate batches).

steps: Integer or None. Total number of steps (batches of samples) before declaring the evaluation round finished. Ignored with the default value of None.

该文档对我来说有点模糊。我不明白“请勿指定batch_size 如果您的数据采用符号张量的形式,数据集...."

就我而言,我的模型有多个输入,输入 x 是 numpy 数组的列表。我的 x 如下所示:

print(len(x))        returns   4
print(x[0].shape) returns (128, 9, 16)

重要的是数据集(本例中是训练集)有 128 个示例。

尽管如此,我对于应该如何调用评估函数感到非常困惑?我特别想知道应该如何设置 batch_sizesteps 参数。

我可以按如下方式运行它:

替代方案 1:

train_metrics = saved_model.evaluate(x          = train_x,
y = train_y,
batch_size = None,
steps = None)

或者我也可以按如下方式运行它:

替代方案 2:

train_metrics = saved_model.evaluate(x          = train_x,
y = train_y,
batch_size = 64,
steps = None)

鉴于我拥有上述格式的数据集,两种替代方案之间有什么区别。我实际上希望看到相同的结果(特别是“损失”),因为评估函数应该只遍历给定的数据集一次,并且应该返回整个数据集的结果。但这并没有发生。上述 2 个替代方案给出了截然不同的结果。

有人清楚地知道这两个调用之间有什么区别吗?

我也尝试检查代码,但无法真正弄清楚这个细节..

最佳答案

 I don't understand what is meant by the dataset in the sentence "Do not specify the batch_size if your data is in the form of symbolic tensors, dataset...."

这里引用的数据集是tf.data.Dataset()的一个实例。数据集已定义其batch_size。我们使用以下方式定义它:

tf.data.Dataset.batch( batch_size )

因此,Keras evaluate 方法中不需要参数。

What is the steps argument?

步长是样本总数除以批量大小时的值。如果我有 1000 个样本,batch_size 为 50,那么步骤数将为 20 ( 1000/50 )。大多数情况下您不需要输入 steps 参数。

第一种选择:

批量大小设置为“无”。因此,将使用默认值 32。因此,这里根据计算,步数为 4 ( 128/32 )。

第二种选择:

批量大小设置为 64。因此,根据计算,步数为 2 ( 128/64 )。

替代方案之间的差异:

两种方案的批量大小不同,分别为 32 和 64。因此,损失和准确度的计算会有所不同。

关于 tensorflow keras评估函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55044154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com