Tensorflow2.0基础-笔记-利用回调函数使用Tensorboard

import tensorflow as tf

#导入数据
(train_image,train_labels),(test_images,test_labels)=tf.keras.datasets.mnist.load_data()


#数据预处理
train_image=tf.expand_dims(train_image,-1)
train_image=tf.cast(train_image/255,tf.float32)
train_labels=tf.cast(train_labels,tf.int64)

test_images=tf.expand_dims(test_images,-1)
test_images=tf.cast(test_images/255,tf.float32)
test_labels=tf.cast(test_labels,tf.int64)


#数据切片导入
dataset=tf.data.Dataset.from_tensor_slices((train_image,train_labels))
test_dataset=tf.data.Dataset.from_tensor_slices((test_images,test_labels))

dataset=dataset.repeat().shuffle(10000).batch(128) 
test_dataset=test_dataset.batch(128)


#建立模型
model=tf.keras.Sequential([
    tf.keras.layers.Conv2D(16,[3,3],activation='relu',input_shape=(28,28,1)),#input_shape=(None,None,1)
    tf.keras.layers.Conv2D(32,[3,3],activation='relu'),
    tf.keras.layers.GlobalAveragePooling2D(),
    tf.keras.layers.Dense(10,activation='softmax')
    
])

#不使用自定义训练
model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy']
)

import os
import datetime
#设置日志(log)存放位置,文件夹名字为当前的时间
log1dir=os.path.join('D:\JupyterFile\Log',datetime.datetime.now().strftime('%Y%m%d-%H%M%S'))

#设置tensorboard回调函数,设置存储位置,设置histogram_freq,对于模型中各个层计算激活值和模型权重直方图的频率(训练轮数中)。 如果设置成 0 ,直方图不会被计算。对于直方图可视化的验证数据(或分离数据)一定要明确的指出。设置成一表示一个epoch绘制一个点tensorboard_callback=tf.keras.callbacks.TensorBoard(log_dir=log1dir,histogram_freq=1)


#创建文件编写器:(作用是当调用这个写入器的时候,将数据写入写入器的指定位置,这里设置一个写入位置learning_rate,用来记录学习率的变化)
file_writer=tf.summary.create_file_writer(log1dir+'/learning_rate')
file_writer.set_as_default()


def learning_rate(epoch):
    rate=0.2
    if epoch>10:
        rate=0.1
    if epoch>20:
        rate=0.05
    tf.summary.scalar('learning-rate',data=rate,step=epoch) #使用file_writer(写入器)记录该标量,写入file_writer指定的目录中
    return rate

#创建学习率回调函数
learning_rate_callback=tf.keras.callbacks.LearningRateScheduler(learning_rate)


model.fit(
    dataset,
    epochs=25,
    steps_per_epoch=60000//128,
    validation_data=test_dataset,
    validation_batch_size=10000//128,
    callbacks=[tensorboard_callback,learning_rate_callback,], #回调函用在这里,当训练一个epoch完毕的时候,调用一次回调函数,记录tensorboard所需数据和自定义的学习率变化数据
    verbose=2
)


%load_ext tensorboard  #加载tensorboard  
%matplotlib inline
%tensorboard --logdir=D:\JupyterFile\Log  #tensorboard 中导入log的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二流子学程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值