gpt4 book ai didi

python - Keras 的 MSE 损失函数显示与 Tensorflow 的 MSE 指标不同的输出?

转载 作者:行者123 更新时间:2023-12-03 21:03:31 25 4
gpt4 key购买 nike

我正在训练一个在最后一层具有连续输出的卷积网络。最后一层有 4 个节点。我使用均方误差作为损失函数。作为检查,我使用了 Tensorflow 的均方误差。对于第一个纪元的第一批,这只给出了相同的结果。因此我的问题是为什么这些不同?我使用了具有最大池化的卷积层,最后我将它展平并使用了 dropout。

此外,我还想知道4个节点的均方误差是如何计算的?它只是将每个节点的均方误差相加吗?因为当我计算每个节点的均方误差时,没有明确的联系。

这是指标。

def loss(y_true, y_pred):
loss = tf.metrics.mean_squared_error(y_true, y_pred)[1]
K.get_session().run(tf.local_variables_initializer())
return loss

在这里我编译模型

model.compile(loss='mse', optimizer= adam, metrics=[loss, node])

这是我计算一个节点的均方误差的方法:

def node(y_true, y_pred):
loss = tf.metrics.mean_squared_error(y_true[:,0], y_pred[:,0])[1]
K.get_session().run(tf.local_variables_initializer())
return node

这是模型的简化形式:

    width = height = 128
model = Sequential()

model.add(Convolution2D(filters=64, kernel_size=(5, 5), activation='relu', padding='same',
input_shape=(width, height, 1)))
model.add(MaxPooling2D(pool_size=(3, 3)))
model.add(Flatten())
model.add(Dense(units=256, activation='relu'))
model.add(Dropout(0.4))
model.add(Dense(units=4, activation='linear'))

adam = Adam(lr=0.01, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0)
model.compile(loss='mse', optimizer= adam, metrics=[loss,node])

最佳答案

您正在返回函数本身。

看看你的代码:

def node(y_true, y_pred):
loss = tf.metrics.mean_squared_error(y_true[:,0], y_pred[:,0])[1]
K.get_session().run(tf.local_variables_initializer())
return node # This is a function name. This should be "return loss"

首先尝试更正此问题。

关于python - Keras 的 MSE 损失函数显示与 Tensorflow 的 MSE 指标不同的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56111981/

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