實驗目的:1、了解python在深度學習領域的應用
2、學習安裝python第三方依賴庫
實驗環境:已正確安裝python3.5以及依賴庫tensorflow、matplotlib
預測過程展示:
1、應用領域
python是一種高級面向對象的動態類型語言,具有開發高效,學習簡單的特點,主要應用於大數據、深度學習、機器學習、以及Web開發等領域,具有良好的發展前景。
2、依賴庫的安裝方法
(1)在線直接安裝
在命令行模式下利用pip命令安裝,命令格式:pip install XXX,如:
pip install tensorflow#安裝tensorflow第三方依賴庫
pip install matplotlib#安裝matplotlib第三方依賴庫
(2)離線安裝
離線安裝適用於網絡較差時,可以在https://pypi.org/處搜索下載安裝包,然後在命令 行切換到安裝包目錄利用pip命令安裝。
3、原始數據準備
在訓練深度學習模型之前必須轉備好訓練數據,本文以y=2x為訓練目標進行實驗:
import numpy as np #導入數值計算模塊
import matplotlib.pyplot as plt#導入畫圖模塊
#準備數據
train_x=np.linspace(-1,1,100)#生成1*100的數組
train_y=2*train_x+np.random.randn(*train_x.shape)*0.5#生成訓練數據時加入了噪聲
#數據以圖片展示
fig=plt.figure()
ax=fig.add_subplot(1,1,1)
ax.scatter(train_x,train_y)
ax.plot(train_x,train_y,'r*',label='Original Data')
plt.legend()
plt.ion()
plt.show()
編輯好以上代碼後,運行生成的結果如圖
4、搭建訓練模型
搭建訓練模型是深度學習比較重要的一個環節,簡單的說它是一個運算規則,本文以一個神經元為例搭建計算模型。
X=tf.placeholder("float")#定義佔位符,作用:輸入訓練值
Y=tf.placeholder("float")#定義佔位符,作用:輸入標準值
W=tf.Variable(tf.random_normal([1]),name="weight")#定義權重
b=tf.Variable(tf.zeros([1]),name="bias")#定義偏執,類似於噪聲
z=tf.multiply(X,W)+b#定義計算結構之前向結構
在定義好計算結構之後,需要定義優化規則
cost=tf.reduce_mean(tf.square(Y-z))#定義以訓練值與預測值的均方根誤差為評判準則
learn_rate=0.01#定義學習率
optimizer=tf.train.GradientDescentOptimizer(learn_rate).minimize(cost)#定義訓練方法(以梯度下降的方法進行訓練,以誤差:cost達到最小為目標)
5、模型訓練
上一步驟就類似於畫出了計算規則的藍圖,但是其並未進行運算,需要初始化變量、定義會話並在會話中利用run()方法啟動圖的運算,這也是tensorflow的一個特點
init=tf.global_variables_initializer()#定義初始化變量的對象
training_epochs=25#定義迭代訓練次數
display_step=2#定義可視化步長
with tf.Session() as sess:#定義會話
sess.run(init)
for epoch in range(training_epochs):
for (x,y) in zip(train_x,train_y):
sess.run(optimizer,feed_dict={X:x,Y:y})
if epoch % display_step == 0:
loss = sess.run(cost,feed_dict={X:train_x,Y:train_y})
print("Epoch:",epoch+1,"cost=",loss,"W=",sess.run(W),"b=",sess.run(b))
#動態可視化定義
try:
ax.lines.remove(lines[0])#先抹除舊線再去畫新線
except Exception:
pass
lines=ax.plot(train_x,train_x*sess.run(W)+sess.run(b),'b-',label='pridect Data')
plt.pause(8)
plt.legend()