【问题标题】:Access loss metric from keras model来自 keras 模型的访问损失指标
【发布时间】:2021-05-07 16:10:37
【问题描述】:

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

    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) 

该模型适合批次,并且是更大类(DQN 代理)的一部分。

由于我在每个时间步都运行一次拟合,并且每集有多个时间步,我怎样才能在训练循环中访问一个变量,从而让我失去网络,以便我可以更密切地监控它? (最终目标是将其添加到 tensorboard)

我可以尝试在每一步或每集(300 步)中访问它,任何更容易的方法。

【问题讨论】:

    标签: python tensorflow keras tensorboard


    【解决方案1】:

    您可以将详细信息更改为 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']
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-02
      • 2020-09-13
      • 2021-05-23
      • 2019-09-23
      • 2021-03-29
      • 2021-03-20
      • 2018-12-17
      • 2020-11-08
      相关资源
      最近更新 更多