神经网络中的一些超参数: 1- 隐藏层的数量 2- 隐藏层单元的数量 3- 学习速率 4- dropout比例 5- 迭代次数 6- 优化器选择,如: SGD、Adam、Adagrad、Rmsprop 7- 激活函数选择,如:Relu、Sigmoid、Leaky Relu 8- batch_size大小 9- 是否使用batch normalization,layer normalization等
TensorBoard
简介: TensorBoard是tensorflow官方推出的可视化工具,可以将模型训练过程中的各种汇总数据展示出来,包括标量(Scalars)、图片(Images)、音频(Audio)、计算图(Graphs)、数据分布(Distributions)、直方图(Histograms)和潜入向量(Embeddings)。 重点需要学习的:
作用: tensorflow代码执行过程现构建图然后再执行,所以中间过程的调试不太方便,除此之外,在使用tensorflow训练大型深度学习网络的时候,中间的计算过程可能非常复杂,所以为了**理解、调试、优化网络**,可以使用TensorBoard观察训练过程中的各种可视化数据。
tensorboard可视化过程
什么是graph和session
Graph 定义操作,如果并不自己创建graph,tensorflow加载库的恶时候会创建一个默认图,可以通过 tf.get_default_graph() 函数获得默认图。 如果定义的多个模型不存在相互依赖,建议创建多个图。
下面,我们一个变量和三个操作定义一个图形:variable返回变量的当前值。 initialize将42的初始值赋给那个变量。 assign给该变量赋值13的新值。
graph = tf.Graph()
with graph.as_default():
variable = tf.Variable(42, name='foo')
initialize = tf.global_variables_initializer()
assign = variable.assign(13)
Session 可以执行graph或者graph的一部分。可以在分配的资源【一台或者多台机器上】保存中间结果和变量的实际值。运行上面定义的任意一个操作时,需要为graph创建一个会话session。因此会话需要分配内存来存储变量的当前值。
with tf.Session(graph=graph) as sess:
sess.run(initialize)
sess.run(assign)
print(sess.run(variable))
可视化过程
- 先建立一个graph
- 确认要graph中的哪些节点放置summary operations以记录信息
使用 tf.summary.scalar 记录标量 使用 tf.summary.histogram 记录数据的直方图 使用 tf.summary.distribution 记录数据的分布图 使用 tf.summary.image 记录图像数据 ··· - operations并不会真的执行计算,除非你告诉他们需要去run,或者它被其他的需要run的operation所依赖。而我们上一次创建的这些summary operations其实并不被其他节点以来。因此我们需要运行所有的summary节点。但是,一个程序下来可能有超多的summary节点,需要手动一个一个启动自然及其繁琐,因此我们可以使用
tf.summary.merge_all 去将所有的summary合并成一个节点,只要运行这个节点,就能产生之前设置的summary_data. - 使用
tf.summary.FileWriter 将运行后输出的数据保存到本地磁盘中。 - 运行整个程序,并且在命令端运行tensorboard的执行,之后打开web端可查看可视化的结果。
参考资料:https://zhuanlan.zhihu.com/p/33178205
|