【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技( 六 )


run([], ={x: batch[0], y: batch[1]}) print("step %d,%g" % (i, ))# Run thestep sess 。run(, ={x: batch[0], : batch[1]})
很多小伙伴都写过类似的代码,构造网络,然后设定训练方式,最后输出一些基本的结果信息,如下:
step 0,10% step 500,12% step 1500,9% step 2000,13%
给你的不仅仅是这些,有一个特别棒的工具能够可视化训练过程中的信息,能让人直观的感受,当然需要一些简单的配置:
写入Graph
= tf..("/tmp//1") .(sess.graph)

【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图
这里虽然能够可视化Graph,却感觉很杂乱,我们可以通过给一些node增加name,scope,让图变得更好看点:
def (input, , ,): with tf 。(name): w = tf 。(tf 。zeros([5, 5, , ]),) b = tf 。(tf 。zeros([]),) conv = tf 。nn 。(input, w, =[1, 1, 1, 1], ="SAME") act = tf 。nn 。relu(conv + b)tf 。nn 。(act, ksize=[1, 2, 2, 1], =[1, 2, 2, 1], ="SAME")def (input, , ,): with tf 。(name): w = tf 。(tf 。zeros([, ]),) b = tf 。(tf 。
zeros([]),)tf 。nn 。relu(tf 。(input, w) + b)# Setup , andthe data x = tf 。(tf 。, shape=[None, 784],)= tf 。(x, [-1, 28, 28, 1]) y = tf 。(tf 。, shape=[None, 10],)conv1 = (, 1, 32, "conv1") conv2 = (conv1, 32, 64, "conv2") = tf 。(conv2, [-1, 7 * 7 * 64]) fc1 = (, 7 * 7 * 64, 1024, "fc1")= (fc1, 1024, 10, "fc2")with tf 。("xent"): xent = tf 。
( tf 。nn 。(=, =y))with tf 。("train"):= tf 。train 。(1e-4) 。(xent)with tf 。(""):= tf 。equal(tf 。(, 1), tf 。(y, 1))= tf 。(tf 。cast(, tf 。)) = tf 。。("/tmp//2")。(sess 。graph)
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图
通过的api,收集更多的数据记录显示在中:
tf..('', xent) tf..('', )tf..image('input', , 3)
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图
修改Conv的代码,将,bias,act加入到中:
def (input, , ,): with tf.(name): w = tf.(tf.zeros([5, 5, , ]),) b = tf.(tf.zeros([]),) conv = tf.nn.(input, w, =[1, 1, 1, 1], ="SAME") act = tf.nn.relu(conv + b) tf..("", w) tf..("", b) tf..("", act)tf.nn.(act, ksize=[1, 2, 2, 1], =[1, 2, 2, 1], ="SAME")
配置将训练过程中的数据写入:
= tf..()= tf..("/tmp//3") .(sess.graph)for i in range(2001): batch = mnist.train.(100) if i % 5 == 0: s = sess.run(, ={x: batch[0], y: batch[1]}) .(s, i) sess.run(, ={x: batch[0], y: batch[1]})
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图

【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图

这次这个的talk给我最大的收获就是用做是这么的方便, 这次talk中主要演示超参的两个方面:
# Try a fewrates forin [1E-3, 1E-4, 1E-5]: # Try a model with fewerforin [True, False]: forin [True, False]: #afor each one (: "lr_1E-3,fc=2,conv=2)= (, , )= tf..("/tmp//" + ) #run with the newmnist(, , , )
-- /tmp/
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图

【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图

【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图

= tf.(tf.zeros([10000, ]),)= .() = tf.....()= ..add() . = .name .. = os.path.join(, '.png') #the width andof a. ...([28, 28]) tf.....(, )for i in range(2001): batch = mnist.train.(100) if i % 5 == 0: [, s] = sess.run([, summ], ={x: batch[0], y: batch[1]}) .(s, i) if i % 500 == 0: sess.run(, ={x: mnist.test., : mnist.test.}) saver.save(sess, os.path.join(, "model.ckpt"), i) sess.run(, ={x: batch[0], : batch[1]})
【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技

文章插图

【转载】史上最全:TensorFlow 好玩的技术、应用和你不知道的黑科技