来自 keras 模型的访问损失指标

Access loss metric from keras model

我正在尝试访问我构建的模型的训练损失,因为我将其称为训练循环。我建立了一个模型如下:

    def create_model(self):
        
        model = Sequential()
        model.add(Dense(172, input_shape=(1, 172), activation = 'relu'))
        model.add(Dense(172, activation = 'relu'))
        model.add(Dense(86, activation = 'relu'))
        model.add(Dense(43, activation = 'relu'))
        model.add(Dense(21, activation = "relu"))
        model.add(Flatten())
        model.add(Dense(7, activation="linear"))
        model.compile(loss="mse", optimizer=Adam(lr=0.001), metrics=['accuracy'])
        return model

而我的合身度如下:

self.model.fit(np.array(X), np.array(y), batch_size=MINIBATCH_SIZE, verbose=0, shuffle=False) 

该模型适用于一个批次,并且是更大 class(DQN 代理)的一部分。

因为我 运行 每个时间步都适合,而且我每集有多个时间步,我怎么能有一个我可以在训练循环中访问的变量,它会给我网络的损失,所以我可以更密切地监视它? (最终目标是将其添加到张量板)

我可以尝试在每一步或每集(300 步)中访问它,无论哪种方式更容易。

您可以将 verbose 更改为 1(显示在 epoch 内不断变化的损失和进度)或将其更改为 2(在每个 epoch 后显示损失)。您还可以将拟合线更改为:

history = self.model.fit(np.array(X), np.array(y), batch_size=MINIBATCH_SIZE,verbose=0, shuffle=False)

然后在n_epochs之后,您可以通过以下调用提取数组中的损失:

losses = history.history['loss']

您可以在一个循环中迭代训练,以您喜欢的频率提取损失,并且可以绘制它们,或者保存它们以单独查看。