TensorBoard的使用:生成计算图
操作系统:Windows
前提:使用Anaconda搭建好了TensorFlow的环境,环境名为“tensorflow”
Main Text
以如下代码为例:
tensorflow中
# tf1.py
import tensorflow as tf
# 计算范围:Computation
with tf.name_scope("Computation"):
# 子计算范围:Part1
with tf.name_scope("Part1"):
a=tf.constant(5)
b=tf.constant(4)
c=tf.multiply(a,b)
# 子计算范围:Part2
with tf.name_scope("Part2"):
d=tf.constant(2)
e=tf.constant(3)
f=tf.multiply(d,e)
# 计算范围:Result
with tf.name_scope("Result"):
g=tf.add(c,f)
# 创建一个TensorFlow会话
with tf.Session() as sess:
# 采用此函数将计算图的结果写入一个事件中
writer=tf.summary.FileWriter("log", sess.graph)
print(sess.run(g))
writer.close()
2019.9.4 update
keras中
from __future__ import print_function
import numpy as np
from keras.callbacks import ModelCheckpoint
from keras.callbacks import TensorBoard
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import RMSprop
from keras.utils import np_utils
import os
np.random.seed(1671)
NB_EPOCH = 20
BATCH_SIZE = 128
VERBOSE = 1
NB_CLASSES = 10
OPTIMIZER = RMSprop()
N_HIDDEN = 128
VALIDATION_SPLIT = 0.2 # 训练集中用作验证集的数据比例
DROPOUT = 0.3
MODEL_DIR = "./keras_test/logs"
(X_train, y_train), (X_test, y_test) = mnist.load_data()
RESHARPED = 784
X_train = X_train.reshape(60000, RESHARPED)
X_test = X_test.reshape(10000, RESHARPED)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255
print(X_train.shape[0], 'train samples')
print(X_test.shape[0], 'test samples')
Y_train = np_utils.to_categorical(y_train, NB_CLASSES)
Y_test = np_utils.to_categorical(y_test, NB_CLASSES)
# N_HIDDEN个隐藏层
model = Sequential()
model.add(Dense(N_HIDDEN, input_shape=(RESHARPED,)))
model.add(Activation('relu'))
model.add(Dropout(DROPOUT))
model.add(Dense(N_HIDDEN))
model.add(Activation('relu'))
model.add(Dropout(DROPOUT))
model.add(Dense(NB_CLASSES))
model.add(Activation('softmax'))
model.summary()
model.compile(loss='categorical_crossentropy', optimizer=OPTIMIZER, metrics=['accuracy'])
# checkpoint = ModelCheckpoint(filepath=os.path.join(MODEL_DIR, "model-{epoch:02d}.h5"))
tensorboard=TensorBoard(log_dir='./logs', histogram_freq=0, batch_size=32, write_graph=True, write_grads=True,
write_images=True, embeddings_freq=0, embeddings_layer_names=None, embeddings_metadata=None)
model.fit(X_train, Y_train, batch_size=BATCH_SIZE, epochs=NB_EPOCH, verbose=VERBOSE,
validation_split=VALIDATION_SPLIT, callbacks=[tensorboard])
score = model.evaluate(X_test, Y_test, verbose=VERBOSE)
print("Test score:", score[0])
print("Test accuracy:", score[1])
执行后,要找到生成日志文件的文件夹(笔者是在VS Code下挂载anaconda的环境,log文件所在的文件夹和py文件在同一目录)。
打开 Anaconda Prompt 输入
activate tensorflow(环境名)
或者打开cmd输入
conda activate tensorflow(环境名)
就可以进入tensorflow的环境。
接下来要定位到log文件的上级目录,笔者的情况即为定位到py文件所在的目录。
cd ***(path)
然后输入如下命令:
tensorboard --logdir (path)
经过测试,路径不用加不加引号没关系,但是*–logdir和(path)*之间要有空格或等号。
注意:
-
log是log文件所在文件夹的文件夹名,它是由前文中的如下代码决定的,双引号内的内容就是文件夹名,可以自定义。
writer=tf.summary.FileWriter(“log”, sess.graph)
-
“–port==6003”是自定义端口号,可以缺省。
最后终端窗口会反馈一个网址,将这个网址输入浏览器中便可,最后效果如下。
Reference:
[1]: Hands-On Reinforcement Learning with Python: Master reinforcement and deep reinforcement learning using OpenAI Gym and TensorFlow [M]
[2]: https://github.com/PacktPublishing/Hands-On-Reinforcement-Learning-with-Python
[3]: https://keras.io/zh/callbacks/#tensorboard