第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

你如何編輯現(xiàn)有的 Tensorboard Training Loss 摘要?

你如何編輯現(xiàn)有的 Tensorboard Training Loss 摘要?

哈士奇WWW 2022-07-19 10:30:38
我已經(jīng)訓(xùn)練了我的網(wǎng)絡(luò)并生成了一些訓(xùn)練/驗(yàn)證損失,我通過(guò)以下代碼示例保存了這些損失(僅訓(xùn)練損失示例,驗(yàn)證完全等效):valid_summary_writer = tf.summary.create_file_writer("/path/to/logs/")with train_summary_writer.as_default():    tf.summary.scalar('Training Loss', data=epoch_loss, step=current_step)訓(xùn)練后,我想使用 Tensorboard 查看損失曲線。但是,因?yàn)槲覍p失曲線保存在名稱“Training Loss”和“Validation Loss”下,所以這些曲線繪制在單獨(dú)的圖表上。我知道我應(yīng)該將名稱更改為簡(jiǎn)單的“損失”以解決此問(wèn)題,以便將來(lái)寫入日志目錄。但是如何編輯我現(xiàn)有的訓(xùn)練/驗(yàn)證損失日志文件來(lái)解決這個(gè)問(wèn)題?我試圖修改以下帖子的解決方案:https://stackoverflow.com/a/55061404編輯日志文件的步驟并重新寫入文件;我的版本涉及更改文件中的標(biāo)簽。但我在這方面沒(méi)有成功。它還需要通過(guò) 'tf.compat.v1' 導(dǎo)入較舊的 Tensorflow 代碼。有沒(méi)有辦法實(shí)現(xiàn)這一點(diǎn)(可能在 TF 2.X 中)?我曾想過(guò)簡(jiǎn)單地從包含損失的每個(gè)日志目錄中獲取損失和步長(zhǎng)值,并通過(guò)我以前的工作方法將它們寫入新的日志文件,但我只設(shè)法獲得了步長(zhǎng),而不是損失值本身。有人在這里取得過(guò)成功嗎?---=== 編輯 ===---我設(shè)法使用來(lái)自@jhedesa 的代碼解決了這個(gè)問(wèn)題我不得不稍微改變調(diào)用函數(shù)“rename_events_dir”的方式,因?yàn)槲以?Google Colab Notebook 中協(xié)同使用 Tensorflow。為此,我更改了代碼的最后一部分:if __name__ == '__main__':    if len(sys.argv) != 5:        print(f'{sys.argv[0]} <input dir> <output dir> <old tags> <new tag>',              file=sys.stderr)        sys.exit(1)    input_dir, output_dir, old_tags, new_tag = sys.argv[1:]    old_tags = old_tags.split(';')    rename_events_dir(input_dir, output_dir, old_tags, new_tag)    print('Done')要閱讀此內(nèi)容:rootpath = '/path/to/model/'dirlist = [dirname for dirname in os.listdir(rootpath) if dirname not in ['train', 'valid']]for dirname in dirlist:  rename_events_dir(rootpath + dirname + '/train', rootpath + '/train', 'Training Loss', 'loss')  rename_events_dir(rootpath + dirname + '/valid', rootpath + '/valid', 'Validation Loss', 'loss')請(qǐng)注意,我調(diào)用了兩次“rename_events_dir”,一次用于編輯訓(xùn)練損失的標(biāo)簽,一次用于驗(yàn)證損失標(biāo)簽。我可以通過(guò)設(shè)置“old_tags = 'Training Loss;Validation Loss'”并使用“old_tags = old_tags.split(';')”來(lái)拆分標(biāo)簽來(lái)使用之前調(diào)用代碼的方法。我使用我的方法只是為了理解代碼以及它如何處理數(shù)據(jù)。
查看完整描述

1 回答

?
忽然笑

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊

正如如何在 Tensorboard 中加載選定范圍的樣本中所述,TensorBoard 事件實(shí)際上是存儲(chǔ)的記錄文件,因此您可以讀取它們并按原樣處理它們。這是一個(gè)與那里發(fā)布的腳本類似的腳本,但用于重命名事件,并更新為在 TF 2.x 中工作。


#!/usr/bin/env python3

# -*- coding: utf-8 -*-


# rename_events.py


import sys

from pathlib import Path

import os

# Use this if you want to avoid using the GPU

os.environ['CUDA_VISIBLE_DEVICES'] = '-1'

import tensorflow as tf

from tensorflow.core.util.event_pb2 import Event


def rename_events(input_path, output_path, old_tags, new_tag):

    # Make a record writer

    with tf.io.TFRecordWriter(str(output_path)) as writer:

        # Iterate event records

        for rec in tf.data.TFRecordDataset([str(input_path)]):

            # Read event

            ev = Event()

            ev.MergeFromString(rec.numpy())

            # Check if it is a summary

            if ev.summary:

                # Iterate summary values

                for v in ev.summary.value:

                    # Check if the tag should be renamed

                    if v.tag in old_tags:

                        # Rename with new tag name

                        v.tag = new_tag

            writer.write(ev.SerializeToString())


def rename_events_dir(input_dir, output_dir, old_tags, new_tag):

    input_dir = Path(input_dir)

    output_dir = Path(output_dir)

    # Make output directory

    output_dir.mkdir(parents=True, exist_ok=True)

    # Iterate event files

    for ev_file in input_dir.glob('**/*.tfevents*'):

        # Make directory for output event file

        out_file = Path(output_dir, ev_file.relative_to(input_dir))

        out_file.parent.mkdir(parents=True, exist_ok=True)

        # Write renamed events

        rename_events(ev_file, out_file, old_tags, new_tag)


if __name__ == '__main__':

    if len(sys.argv) != 5:

        print(f'{sys.argv[0]} <input dir> <output dir> <old tags> <new tag>',

              file=sys.stderr)

        sys.exit(1)

    input_dir, output_dir, old_tags, new_tag = sys.argv[1:]

    old_tags = old_tags.split(';')

    rename_events_dir(input_dir, output_dir, old_tags, new_tag)

    print('Done')

你會(huì)像這樣使用它:


> python rename_events.py my_log_dir renamed_log_dir "Training Loss;Validation Loss" loss



查看完整回答
反對(duì) 回復(fù) 2022-07-19
  • 1 回答
  • 0 關(guān)注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)