本程式是基於mnist手寫資料集,利用softmax函式來**準確率,程式進行了詳細注釋。
tensorboard是乙個強大的視覺化工具,可以看出構建的網路的結構。它支援graphs,scalars, distributions, histograms等視覺化。
程式如下:
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
# 載入資料集
mnist = input_data.read_data_sets("mnist_data", one_hot=true)
# 每個批次的大小
batch_size = 100
# 計算一共有多少個批次
n_batch = mnist.train.num_examples // batch_size
# 引數概要
def variable_summaries(var):
with tf.name_scope('summaries'):
mean = tf.reduce_mean(var)
tf.summary.scalar('mean', mean) # 平均值
with tf.name_scope('stddev'):
stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))
tf.summary.scalar('stddev', stddev) # 標準差
tf.summary.scalar('max', tf.reduce_max(var)) # 最大值
tf.summary.scalar('min', tf.reduce_min(var)) # 最小值
tf.summary.histogram('histogram', var) # 直方圖
# 命名空間
with tf.name_scope('input'):
# 定義兩個placeholder
x = tf.placeholder(tf.float32, [none, 784], name='x-input')
y = tf.placeholder(tf.float32, [none, 10], name='y-input')
with tf.name_scope('layer'):
# 建立乙個簡單的神經網路
with tf.name_scope('wights'):
w = tf.variable(tf.zeros([784, 10]), name='w')
variable_summaries(w)
with tf.name_scope('biases'):
b = tf.variable(tf.zeros([10]), name='b')
variable_summaries(b)
with tf.name_scope('wx_plus_b'):
wx_plus_b = tf.matmul(x, w) + b
with tf.name_scope('softmax'):
prediction = tf.nn.softmax(wx_plus_b)
# 二次代價函式
# loss = tf.reduce_mean(tf.square(y-prediction))
with tf.name_scope('loss'):
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=prediction))
tf.summary.scalar('loss', loss)
with tf.name_scope('train'):
# 使用梯度下降法
train_step = tf.train.gradientdescentoptimizer(0.2).minimize(loss)
# 初始化變數
init = tf.global_variables_initializer()
with tf.name_scope('accuracy'):
with tf.name_scope('correct_prediction'):
# 結果存放在乙個布林型列表中
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(prediction, 1)) # argmax返回一維張量中最大的值所在的位置
with tf.name_scope('accuracy'):
# 求準確率
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
tf.summary.scalar('accuracy', accuracy)
# 合併所有的summary
merged = tf.summary.merge_all()
with tf.session() as sess:
sess.run(init)
writer = tf.summary.filewriter('logs/', sess.graph)
for epoch in range(51):
for batch in range(n_batch):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
# merged返回值存入summary中
summary, _ = sess.run([merged, train_step], feed_dict=)
# 記錄summary和epoch到檔案中
writer.add_summary(summary, epoch)
acc = sess.run(accuracy, feed_dict=)
print("iter " + str(epoch) + ",testing accuracy " + str(acc))
tensboard不會使用的請看此篇文章:如何使用tensorboard
tensorboard視覺化結果如下:
graphs(模型流圖):
histograms(直方圖):
自己可以執行一下**,視覺視覺化讓人興奮不已,tensorflow太厲害了。
TensorBoard模型視覺化
tensorboard是乙個基於瀏覽器的互動式工具,可以讓我們看到學習過程,並探索我們訓練好的模型。要執行tensorboard,首先到命令終端 開始 anaconda anaconda prompt,輸入activate tensorflow 然後,告訴tensorboard記錄的相關摘要 ten...
Tensorboard視覺化流程
在session會話中,加入視覺化 記住你的路徑!with tf.session as sess 你的內容 模型視覺化輸出 writer tf.summary.filewriter lenet ln1 graph tf.get default graph writer.close 然後輸入cmd,開...
深度學習 TensorBoard視覺化
1 概述 tensorboard是tensorflow的視覺化工具 通過tensorflow程式執行過程中輸出的日誌檔案視覺化tensorflow程式的執行狀態 tensorflow和tensorboard程式跑在不同的程序中 清除default graph和不斷增加的節點 tf.reset def...