为什么Keras张量板标量图不是线性的(循环)?

2024-06-16 08:47:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我用的是Keras的张力板。但标量图是乱七八糟的。因为不是线性的,循环回到自身。有没有办法纠正这个问题

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)])

Tags: selflogaddtruemodeldiractivationlogs
1条回答
网友
1楼 · 发布于 2024-06-16 08:47:50

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

logs/
    CNN1/
    CNN2/

如果你没有这个确切的结构,张力板会认为这两个日志属于同一个训练课程,因此奇怪的曲线

[编辑]当我阅读您的代码时,我看到了一个简单的解决方法:当您指定logdir时,附加一个带有时间戳作为后缀的目录

相关问题 更多 >