之前的博客已经介绍过InceptionV3论文,包括实现了InceptionV3的前向传播,很详细的一个版本,接下来还会有更多关于InceptionV3的介绍。想从InceptionV3入手逐步来理解卷积的构造,模型的构建,训练,测试以及迁移。
进入正题
1.导入各种包
import tensorflow as tf
import os
import tarfile
import requests
2.下载模型
2.1保存下载路径在inception_pretrain_model_url
inception_pretrain_model_url = 'http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz'
2.2创建存放模型的文件夹
#创建文件夹的名字及路径(当前路径下)
inception_pretrain_model_dir = "inception_pretrain"
#如果inception_pretrain_model_dir的文件夹不存在,则创建
if not os.path.exists(inception_pretrain_model_dir):
#os.path.exists()函数用来检验给出的路径是否真地存在 返回bool
os.makedirs(inception_pretrain_model_dir)
#makedir(path):创建文件夹,注:创建已存在的文件夹将异常
filename = inception_pretrain_model_url.split('/')[-1]
#inception_pretrain_model_url的字符串是http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz
#filename取以/分开的最后一个字符串即inception-2015-12-05.tgz
filepath = os.path.join(inception_pretrain_model_dir, filename)
#将两个路径连接起来:inception_pretrain\inception-2015-12-05.tgz
2.3查看路径下是否有文件,若无就下载
# 如果路径名不存在(这里指的是路径下的内容)的话,就开始下载文件
if not os.path.exists(filepath):
print("开始下载: ", filename)
r = requests.get(inception_pretrain_model_url, stream=True)
# requests.get从指定http网站上下载内容
with open(filepath, 'wb') as f:
for chunk in r.iter_content(chunk_size=1024):
if chunk:
f.write(chunk)
#用with语句来打开文件,就包含关闭的功能。wb是写二进制文件,由于文件过大,批量写(这里是压缩包)
2.4解压文件,解压前先打印开始解压提示语
print("下载完成, 开始解压: ", filename)
#解压出来的文件其中的classify_image_graph_def.pb 文件就是训练好的Inception-v3模型。
#imagenet_synset_to_human_label_map.txt是类别文件。
tarfile.open(filepath, 'r:gz').extractall(inception_pretrain_model_dir)
# tarfile解压文件
3.创建TensorBoard log目录
log_dir = 'inception_log' #目录地址
if not os.path.exists(log_dir):
os.makedirs(log_dir)
# 加载inception graph
inception_graph_def_file = os.path.join(inception_pretrain_model_dir, 'classify_image_graph_def.pb')
with tf.Session() as sess:
with tf.gfile.FastGFile(inception_graph_def_file, 'rb') as f: #以二进制读取文件
graph_def = tf.GraphDef()
# 绘图
graph_def.ParseFromString(f.read())
tf.import_graph_def(graph_def, name='')
writer = tf.summary.FileWriter(log_dir, sess.graph)
#AttributeError: module 'tensorflow.python.training.training' has no attribute 'SummaryWriter'所以用tf.summary.FileWriter
writer.close()
解压完后的文件如下:
所有代码运行完,会得到一个events事件,在目录inception_log下,如图:
接下来打开这个文件,需要用到命令行。
注意,我这个inception_log文件的地址是在D:/python/neural network/Inception/inception_log
4.命令行切换到inception_log跟目录
切换到目录后就可以使用tensorboard --logdir=log_dir(创建log的地址)打开文件了
最后出来的这个网址http://DESKTOP-JIUMT28:6006复制到谷歌浏览器里面去就可以得到可视化图
展开看细节
好了,不会的宝宝可以私信我