第乙個TensorFlow程式

2022-06-28 12:00:11 字數 2587 閱讀 5817

tensorflow的執行方式分為如下4步:

(1)載入資料及定義超引數

(2)構建網路

(3)訓練模型

(4)評估模型和進行**

import tensorflow as tf

import numpy as np

#構造滿足一元二次方程的函式

x_data=np.linspace(-1,1,300)[:,np.newaxis]

noise=np.random.normal(0,0.05,x_data.shape)#加入一些雜訊點

y_data=np.square(x_data)-0.5+noise

#接下來定義x和y的佔位符來作為將要輸入神經網路的變數

xs=tf.placeholder(tf.float32,[none,1])

ys=tf.placeholder(tf.float32,[none,1])

#構建網路模型

#構建乙個隱藏層和乙個輸出層

#作為神經網路中的層,輸入引數應該有4個變數:輸入資料、輸入資料的維度、輸出資料的維度和啟用函式

#每一層經過向量化(y=weight*x+biases)的處理,並且經過啟用函式的非線性化處理後,最終得到輸出資料。

def add_layer(inputs,in_size,out_size,activation_function=none):

weights=tf.variable(tf.random_normal([in_size,out_size]))

#構建偏置

biases=tf.variable(tf.zeros([1,out_size])+0.1)

#矩陣相乘

wx_plus_b=tf.matmul(inputs,weights)+biases

if activation_function is none:

outputs= wx_plus_b

else:

outputs=activation_function(wx_plus_b)

return outputs

#構建隱藏層,假設有10個神經元

h1=add_layer(xs,1,20,activation_function=tf.nn.relu)

#構建輸出層

prediction=add_layer(h1,20,1,activation_function=none)

#構建損失函式:計算輸出層的**值和真實值之間的誤差,對二者差的平方求和再取平均,得到損失函式。

#運用梯度下降法,以0.1的效率最小化損失

loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))

train_step=tf.train.gradientdescentoptimizer(0.1).minimize(loss)

#訓練模型

#tf訓練1000次,每50次輸出訓練的損失值

init=tf.global_variables_initializer()#初始化所有變數

sess=tf.session()

sess.run(init)

for i in range(1000):

sess.run(train_step,feed_dict=)

if i%50==0:

print(sess.run(loss,feed_dict=))

0.194179

0.00892639

0.00714868

0.00584467

0.00474677

0.00424151

0.00397673

0.00376577

0.00367131

0.00362922

0.00359284

0.00356307

0.00353341

0.00350975

0.00349089

0.00347355

0.00345795

0.00344346

0.00343009

0.0034147

超引數就是指機器學習模型裡的框架引數。

需要手動設定,不斷試錯。

學習率是乙個最常設定的超引數,學習率設定的越大,訓練時間越短,速度越快;而學習率設定的越小,訓練的準確度越高。先設定0.01,觀察損失值的變化,然後嘗試0.001,0.0001,最終確定乙個比較合適的學習率。

也可以設定可變的學習率。例如,在訓練過程中,記錄最佳的準確率,在連續n epoch沒有達到最佳的準確率時,便可以認為準確率不再提高,就可以停止訓練,稱為「early stopping」。此時,讓學習率減半,下一次滿足時再減半,這樣在逐漸解決最優解時,學習率越來越小,準確度就越來越高。

mini-batch大小,每批大小決定了權重的更新規則。批次越大,訓練越快,但是權值更新頻率略低。如何選擇批次?需要根據硬體效能以及資料集的大小來設定。

一般在較複雜的網路發現了明顯的過擬合,可以考慮增加此項。初學者可以一開始設定為0,然後確定好乙個比較好的學習率後,再給λ乙個值,隨後根據準確率再精細調整。

第乙個tensorflow程式

個人部落格 最近alphago和alphazero的出現,預示著2017年成為人工智慧元年,人工智慧逐漸進入我們的生活和工作的方方面面,如在工作中,阿里巴巴雙十一中,出現了 千人千面 智慧型推薦系統,魯班ai設計師,小蜜機械人,idc智慧型巡檢機械人,還有京東的無人倉庫等。這些都讓我覺得人工智慧越來...

ML 第乙個tensorflow程式

import tensorflow as tf 建立乙個常量 op,產生乙個 1x2 矩陣.這個 op 被作為乙個節點 加到預設圖中.構造器的返回值代表該常量 op 的返回值.matrix1 tf.constant 3.3.建立另外乙個常量 op,產生乙個 2x1 矩陣.matrix2 tf.con...

tensorflow之第乙個專案MNIST資料集

首先登陸 耐心等待,網上好慢。放到當前的路徑下 檢視資料集驗證 檢視資料集的驗證標籤 檢視資料集的測試 檢視資料集的測試標籤 from tensorflow.examples.tutorials.mnist import input data mnist input data.read data s...