如何用tensorflow board可视化训练过程的详细过程

进入train.py文件目录下,新建一个logs文件。
tensorboard --logdir logs
在这里插入图片描述

进入网站:http://localhost:6006/
在这里插入图片描述
因为logs下无数据导致。

新建一个summary:

#build summary
current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
log_dir = 'logs/'+current_time
#内部维护
summary_writer = tf.summary.create_file_writer(log_dir)


送数据:

with summary_writer.as_default():
	tf.summary.scalar('loss',float(loss_ce), step=epoch)  #张量转换为数值     
	tf.summary.scalar('accuracy',float(acc), step=epoch) 

具体以上代码放置位置如下:

def main():
    #build summary
    current_time = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
    log_dir = 'logs/'+current_time
    
    for epoch in range(10):
        for step, (x, y) in enumerate(db):
            #x:[b, 28, 28]=>[b, 784]
            #y:[b]
            x = tf.reshape(x, [-1, 28*28])
            with tf.GradientTape() as tape:
                #使用制定model模型完成前向传播,[b, 784]=>[b, 10]
                logits = model(x)
                y_onehot = tf.one_hot(y, depth = 10)
                #[b]
                loss_mse = tf.reduce_mean(tf.losses.MSE(y_onehot, logits))#完成均方差的计算,对每个实例求均值
                loss_ce = tf.losses.categorical_crossentropy(y_onehot, logits,from_logits = True)
                loss_ce = tf.reduce_mean(loss_ce)#必须求均值才能得到一个标量
            grads = tape.gradient(loss_ce, model.trainable_variables)#model.trainable_variables代表所有需要更新的参数
            optimizer.apply_gradients(zip(grads, model.trainable_variables))#梯度在前,更新参数在后,直接在此位置做更新
            if step % 100 == 0:
                print(epoch, step, 'loss:',float(loss_ce),float(loss_mse)) 
            #test
            total_correct = 0
            total_num = 0
        for x, y in db_test:
            #x:[b, 28, 28]=>[b, 784]
            #y:[b]
            x = tf.reshape(x, [-1, 28*28])   
            #[b,  10]
            logits = model(x)
            #logits =>prob,[b, 10]
            prob = tf.nn.softmax(logits, axis = 1)
            #[b, 10]=[b],int64
            pred = tf.argmax(prob, axis = 1)
            #转换为int32
            pred = tf.cast(pred, dtype = tf.int32)
            #pred:[b]
            #y:[b]
            #correct:[b], True:equal, False:not equal
            correct = tf.equal(pred, y)
            correct = tf.reduce_sum(tf.cast(correct, dtype = tf.int32))
            total_correct += int(correct)
            total_num += x.shape[0]
        acc = total_correct/total_num
        print(epoch, 'test acc:',acc)

        #内部维护
        summary_writer = tf.summary.create_file_writer(log_dir)
        with summary_writer.as_default():
            tf.summary.scalar('loss',float(loss_ce), step=epoch)  #张量转换为数值     
            tf.summary.scalar('accuracy',float(acc), step=epoch) 

运行train文件,生成logs:

在这里插入图片描述
在web中选择对应logs,显示训练过程中的accuracy、loss。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值