通過構建乙個簡單的擬合直線的神經網路來簡單的講解基於tensorflow框架的神經網路構建方法。
講解簡單的使用tensorboard來展示、分析神經網路流圖的方法。
# coding:utf-8
# 呼叫tensorflow
import tensorflow as tf
import numpy as np
log_path = "/home/lucky/mylog.log"
# 這裡生成了100對數字,作為整個神經網路的input
x_data = np.random.rand(100).astype("float32")
# 使用with,讓我們的資料以節點的方式落在tensorflow的報告上。
with tf.name_scope('y_data'):
y_data = x_data * 2.5 + 0.8
#權重2.5,偏移設定2.5
tf.summary.histogram("method_demo"+"/y_data",y_data) #視覺化**變數y_data
# 指定w和b變數的取值範圍,隨機在[-200,200]
with tf.name_scope('w'):
w = tf.variable(tf.random_uniform([1], -200.0, 200.0))
tf.summary.histogram("method_demo"+"/w",w) #視覺化**變數
# 指定偏移值b,同時shape等於1
with tf.name_scope('b'):
b = tf.variable(tf.zeros([1]))
tf.summary.histogram("method_demo"+"/b",b) #視覺化**變數
with tf.name_scope('y'):
y = w * x_data + b #sigmoid神經元
tf.summary.histogram("method_demo"+"/y",y) #視覺化**變數
# 最小化均方
with tf.name_scope('loss'):
loss = tf.reduce_mean(tf.square(y - y_data))
tf.summary.histogram("method_demo"+"/loss",loss) #視覺化**變數
tf.summary.scalar("method_demo"+'loss',loss) #視覺化**常量
# 定義學習率,我們先使用0.7來看看效果
optimizer = tf.train.gradientdescentoptimizer(0.7)
with tf.name_scope('train'):
train = optimizer.minimize(loss)
# 初始化tensorflow引數
init = tf.global_variables_initializer()
# 執行資料流圖
sess = tf.session()
#合併到summary中
merged = tf.summary.merge_all()
#選定視覺化儲存目錄
writer =tf.summary.filewriter(log_path,sess.graph)
sess.run(init)
# 開始計算
for step in range(500):
sess.run(train)
if step % 20 == 0:
print(step, "w:",sess.run(w),"b:", sess.run(b))
result = sess.run(merged) #merged也是需要run的
writer.add_summary(result,step) #result是summary型別的
0 w: [ 3.31470919] b: [ 0.79210788]
20 w: [ 2.60540962] b: [ 0.74690092]
40 w: [ 2.51701379] b: [ 0.79122424]
60 w: [ 2.50275946] b: [ 0.798576]
80 w: [ 2.50044751] b: [ 0.79976904]
100 w: [ 2.50007224] b: [ 0.7999627]
120 w: [ 2.50001168] b: [ 0.79999393]
140 w: [ 2.50000167] b: [ 0.79999912]
160 w: [ 2.50000072] b: [ 0.79999965]
180 w: [ 2.50000072] b: [ 0.79999965]
200 w: [ 2.50000072] b: [ 0.79999965]
220 w: [ 2.50000072] b: [ 0.79999965]
240 w: [ 2.50000072] b: [ 0.79999965]
260 w: [ 2.50000072] b: [ 0.79999965]
280 w: [ 2.50000072] b: [ 0.79999965]
300 w: [ 2.50000072] b: [ 0.79999965]
320 w: [ 2.50000072] b: [ 0.79999965]
340 w: [ 2.50000072] b: [ 0.79999965]
360 w: [ 2.50000072] b: [ 0.79999965]
380 w: [ 2.50000072] b: [ 0.79999965]
400 w: [ 2.50000072] b: [ 0.79999965]
420 w: [ 2.50000072] b: [ 0.79999965]
440 w: [ 2.50000072] b: [ 0.79999965]
460 w: [ 2.50000072] b: [ 0.79999965]
480 w: [ 2.50000072] b: [ 0.79999965]
#在終端中開啟下面一句話
#tensorboard --logdir /home/lucky/mylog.log
在op上增加視覺化變數宣告:tf.summary.histogram(「method_demo」+」/y_data」,y_data)
在op上增加視覺化常量宣告:tf.summary.scalar(「method_demo」+』loss』,loss)
合併到summary中:merged = tf.summary.merge_all()
選定視覺化儲存目錄:writer =tf.summary.filewriter(log_path,sess.graph)其中路徑宣告:log_path = 「」例如:「/home/lucky/mylog.log」,當執行sess.run的時候,sess.graph就會寫入log_path當中。
在每步訓練的時候寫入當時的資料資訊:result = sess.run(merged) #merged也是需要run的;
writer.add_summary(result,step) #result是summary型別的
基於tensorflow2實現卷積神經網路
利用tensorflow2中的api實現乙個簡單的卷積神經網路,完成梯度下降的操作並繪製訓練集和測試集準確率曲線。資料集在這裡 資料分布 訓練集數量為209,測試集數量為50 import numpy as np import matplotlib.pyplot as plt import tens...
基於tensorflow搭建乙個神經網路
一,tensorflow的簡介 tensorflow是乙個採用資料流圖,用於數值計算的 開源軟體庫。節點在圖中表示數字操作,圖中的線 則表示在節點間相互聯絡的多維資料陣列,即張量 它靈活的架構讓你可以在多種平台上展開計算,例 如台式計算機中的乙個或多個cpu 或gpu 伺服器,移動裝置等等。tens...
Tensorflow神經網路的搭建
關於神經網路nn結構,在最近的課程中推進了重新認識了下nn結構。多層向前神經網路由3部分組成,輸入層 input layer 隱藏層 hidden layers 輸出層 output layers 如下圖 張量 張量就是多維陣列 列表 用 階 表示張量的維度。0 階張量稱作標量,表示乙個單獨的數 舉...