gpt4 book ai didi

tensorflow - 通过批量训练计算自动编码器 MSE 的正确方法

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

假设您有一个代表自动编码器 (AE) 的网络。假设它有 90 个输入/输出。我想用大小为 100 的批处理对其进行批量训练。我将用 x 表示我的输入,用 y 表示我的输出。

现在,我想使用 MSE 来评估我的训练过程的性​​能。据我了解,我的网络的输入/输出尺寸为 (100, 90)。

MSE计算的第一部分是逐元素执行的,即

(x - y)²

所以我最终再次得到一个大小为 (100, 90) 的矩阵。为了更好地理解我的问题,我将任意绘制一个矩阵来表示它现在的样子:

[[x1 x2 x3 ... x90],    # sample 1 of batch
[x1 x2 x3 ... x90], # sample 2 of batch
.
.
[x1 x2 x3 ... x90]] # sample 100 of batch

从现在开始,我偶然发现了计算误差的各种版本。所有版本的目标都是将矩阵简化为标量,然后可以对其进行优化。

版本 1:

首先对各个样本中的二次误差求和,然后计算所有样本的平均值,例如:

v1 = 
[ SUM_of_qerrors_1, # equals sum(x1 to x90)
SUM_of_qerrors_2,
...
SUM_of_qerrors_100 ]

result = mean(v1)

版本 2:

计算每个样本的二次误差平均值,然后计算所有样本的平均值,例如:

v2 = 
[ MEAN_of_qerrors_1, # equals mean(x1 to x90)
MEAN_of_qerrors_2,
...
MEAN_of_qerrors_100 ]

result = mean(v2)

我个人认为版本1是正确的做法,因为常用的交叉熵也是以同样的方式计算的。但如果我使用版本 1,它就不是真正的 MSE。

我在这里找到了一个 keras 示例( https://keras.io/examples/variational_autoencoder/ ),但不幸的是我无法弄清楚 keras 如何通过批量训练来实现这一点。

如果您能提示 keras(以及 tensorflow )如何处理此问题或正确的版本是什么,我将不胜感激。

谢谢!

最佳答案

版本 2,即计算每个样本的二次误差的平均值,然后计算结果数字的平均值,是 Keras 中完成的版本。 :

def mean_squared_error(y_true, y_pred):
return K.mean(K.square(y_pred - y_true), axis=-1)

但是,请注意,对样本取平均值是在代码的另一部分中完成的,我已对此进行了广泛解释 herehere

关于tensorflow - 通过批量训练计算自动编码器 MSE 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55936214/

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