gpt4 book ai didi

python - 为什么 Keras Tensorboard 标量图不是线性的(循环)?

转载 作者:行者123 更新时间:2023-12-01 07:29:01 25 4
gpt4 key购买 nike

我通过 Keras 使用 TensorBoard。但标量图是困惑的。就像非线性并循环回到自身一样。有什么办法可以纠正这个问题吗?

enter image description here

class LRTensorBoard(TensorBoard):
def __init__(self, log_dir):
super().__init__(log_dir=log_dir)
def on_epoch_end(self, epoch, logs=None):
logs.update({'lr': K.eval(self.model.optimizer.lr)})
super().on_epoch_end(epoch, logs)

model = Sequential()
model.add(GRU(16, input_shape=(TimeStep.TIME_STEP + 1, TimeStep.FEATURES), activation='relu', return_sequences=True))
model.add(GRU(16, activation='relu', return_sequences=True))
model.add(GRU(16, activation='relu'))
model.add(Dense(3, activation='softmax'))

tensorboard = TensorBoard(log_dir=logDir, histogram_freq=0, write_graph=True)
tensorboard.set_model(model)

model.compile(loss='categorical_crossentropy', optimizer=optimize, metrics=[categorical_accuracy])
history = model.fit(TimeStep.fodder, TimeStep.target, epochs=100, shuffle=True, batch_size=4064, validation_split=0.3, callbacks=[tensorboard, LRTensorBoard(log_dir=logDir)])

最佳答案

这是因为 TensorBoard 期望所有日志都有不同的目录。例如,如果您有 2 个名为 CNN1 和 CNN2 的模型,那么您应该具有以下结构:

logs/
CNN1/
CNN2/

如果你没有这个精确的结构,TensorBoard 会认为两个日志属于同一个训练 session ,因此会出现奇怪的曲线......

[编辑]当我阅读您的代码时,我看到一个简单的修复:当您指定 logdir 时,附加一个以时间戳为后缀的目录

关于python - 为什么 Keras Tensorboard 标量图不是线性的(循环)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57305962/

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