Python Keras的MSE损失函数显示不同的输出,然后Tensorflow的MSE度量?

Python Keras的MSE损失函数显示不同的输出,然后Tensorflow的MSE度量?,python,tensorflow,keras,mean-square-error,Python,Tensorflow,Keras,Mean Square Error,我正在训练一个在最后一层连续输出的卷积网络。最后一层有4个节点。我使用均方误差作为损失函数。作为检查,我使用了Tensorflow的均方误差。对于第一个时代的第一批人来说,这只给出了相同的结果。因此,我的问题是,为什么这些不同?我使用了最大池的卷积层,最后我将其展平并使用了dropout 此外,我还想知道如何计算4个节点的均方误差?它只是每个节点的均方误差的总和吗?因为当我计算每个节点的均方误差时,没有一个清晰的连接 这是度量标准 def loss(y_true, y_pred): lo

我正在训练一个在最后一层连续输出的卷积网络。最后一层有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节点(y_true,y_pred):
损失=tf.度量.均方误差(y_真[:,0],y_pred[:,0])[1]
K.get_session().run(tf.local_variables_initializer())
返回节点#这是一个函数名。这应该是“退货损失”

首先尝试更正此问题。

什么是“最后一层有4个节点”?代码将是说明性的。我添加了一个简化形式的模型。您是否也可以添加代码,用于检查度量和培训损失中的损失?