一、run.py执行过程:
1、执行 tf.app.run()
2、tf.app.run()会调用本类中的的main函数,然后依次执行
3、首先获取已经处理好的图片
4、然后定义tensorflow占位符,convolution层和pool层,全连接层和逻辑输出层
5、最后定义损失函数,反向传播过程和模型评价的一些指标
6、获取session,并初始化所有变量,sess.run()启动模型训练的过程
7、模型训练结束后,读取模型存放的参数和图,并预测新的数据
8、sess.close() 整个程序执行结束
二、tensorboard 可视化的使用:
1、首先在程序中定义要可视化的变量:
示例1: tf.summary.scalar("accuracy", accuracy)
示例2: tf.summary.histogram("dense_layer1", active_dense2_layer)
- 合并所有可视化的过程:
merged_summary_op = tf.summary.merge_all()
- run这个节点操作:
sess.run(merged_summary_op)
- 将run的结果加入summarywriter,注意必须有global_step参数:
summary_writer.add_summary(summary_op, global_step=global_step)
- 最后将数据保存到文件:
saver.save(sess, FLAGS.model_path)
- linux 执行 tensorboard –logdir= D:\app\log启动
- windows执行 tensorboard --logdir=train:D:\app\log 启动
- 然后在浏览器中输入http://ip:6006 即可查看训练过程中参数的变化
三、一些解释:
1、tf.app.flags.DEFINE_string() tensorflow定义参数
2、epoch 指模型遍历一次整个数据,称为一个epoch
3、batch 指数据集中的一个批次的数据,是数据集的子集
4、tf.name_scope("add_placeholder"): 添加一个命名域,使tensorboard中流程图更有层次感。
5、feature 特征
6、label: 标签
四、一些优化技巧:
1、每个epoch训练时,都要进行shuffle的过程。
2、使用batch norm 加快训练过程,有正则的作用
3、学习率进行衰减,减少收敛过程中的摆动
4、处理图片为同样的正方形的大小
5、要对图片是否有效进行判断
6、windows建议安装anacoda环境进行开发