《Python 深度学习》7.2.2 TensorBoard简介(代码)

1. 使用了TensorBoard的文本分类模型

import keras
from keras import layers
from keras.datasets import imdb
from keras.preprocessing import sequence

max_features = 2000 #作为特征的单词个数
max_len = 500 #在这么多单词之后截断文本

(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)
x_train = sequence.pad_sequences(x_train, maxlen=max_len)
print(x_train.shape)    #(25000, 500)
x_test = sequence.pad_sequences(x_test, maxlen=max_len)
print(x_test.shape) 

(25000, 500)

(25000, 500)

model = keras.models.Sequential()
model.add(layers.Embedding(max_features, 128, input_length=max_len, name='embed'))
model.add(layers.Conv1D(32, 7, activation='relu'))
model.add(layers.MaxPooling1D(5))
model.add(layers.Conv1D(32, 7, activation='relu'))
model.add(layers.GlobalMaxPooling1D())
model.add(layers.Dense(1))
model.summary()
#由于电脑内存过小,无法写入25000行的数据,因此取前1000行
print(x_train[:1000].shape)   #(1000, 500)

model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])

 2. 在使用TensorBoard之前,首先需要创建一个目录,用来保存生成的日志文件,可手动创建也可使用终端命令创建。

$ mkdir my_log_dir

3. 使用一个TensorBoard回调函数来训练模型

callbacks = [
    keras.callbacks.TensorBoard(
        log_dir='my_log_dir',  #将日志写入这个位置
        histogram_freq=1,  #每一轮之后记录激活的直方图
        embeddings_freq=1,  #每一轮之后记录嵌入数据
        embeddings_data=x_train[:1000].astype('float32')  #指定embeddings_data的值
    )
]
history = model.fit(x_train, y_train,
                    epochs=20,
                    batch_size=128,
                    validation_split=0.2,
                    callbacks=callbacks
                   )

4. 在命令行cmd启动TensorBoard服务器,指示它读取回调函数当前正在写入的日志

tensorboard --logdir "D:\Deep Learning with Python\Code\my_log_dir"

 在浏览器打开所给的localhost地址,就可以查看:

 5. 利用keras.utils.plot_model函数,将模型绘制为层组成的图 

注意,Keras还提供了另一种更简洁的方法——keras.utils.plot_model函数,它可以将模型绘制为层组成的图,而不是Tensorflow运算组成的图。使用这个函数需要安装Python的pydot库和pydot-ng库,还需要安装graphviz库。(安装教程:keras可视化pydot和graphviz安装

我们来快速看一下:

from keras.utils import plot_model
plot_model(model,to_file='model.png')

from keras.utils import plot_model
plot_model(model,show_shapes=True,to_file='model.png')


2021-11-23 Tues. 15:50 p.m.

猜你喜欢

转载自blog.csdn.net/baidu_30506559/article/details/121481235