Tensorflow深度学习应用(进阶篇)
生活随笔
收集整理的這篇文章主要介紹了
Tensorflow深度学习应用(进阶篇)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#coding=gbk
'''
進階篇相關數據:標簽:要預測的事物特征:用于描述數據的輸入變量樣本:數據的特定實例有標簽的樣本:{特征,標簽}無標的樣本:{特征,...}模型:將樣本映射到預測標簽,有內部參數描述,參數通過學習而來。通過有標簽的樣本來確定所以權重w和偏差b的最優值。損失:是對糟糕預測的懲罰,損失是一個數值,表示對單個樣本而言模型的預測準確度。定義損失函數L1損失:基于模型預測的值與標簽的實際值之差的絕對值平方損失(L2損失)均方誤差(MSE):平均平方誤差收斂:總體損失不再變化或變化極其緩慢梯度:是一個向量,表示某一函數在該點處的方向導數最大,即該方向變化最快,變化率最大。f'(x)=dx/xy,沿著梯度的反方向能很快收斂。梯度下降法學習率:步長設置要合理,才能很快收斂,不會出現左右震蕩現象。超參數:指機器學習在訓練之前需要設置的參數,好的超參數,可以提高學習效率和效果。如學習率隱含層層數等。擴展篇
'''
#coding=gbkfrom pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #設置繪圖顯示中文
mpl.rcParams['axes.unicode_minus'] = False #防止中文亂碼,有時候第一句不能完全避免顯示錯誤#導入tensorflow 模塊
import tensorflow.compat.v1 as tf
import matplotlib.pyplot as plt
import numpy as np#回歸模型實踐
#擬合函數y=4.5x+3
#樣本數據,有誤差
dx = np.linspace(-1, 1, 50)#等差數列
eps = np.random.randn(*dx.shape) * 0.4#*dx.shape表示吧x拆分為一個一維數組,randn參數為一個整數類型的值,而x.shape為一個元組
dy = 4.5 * dx + 3 + epsprint("dx=",dx)
print("dy=", dy)#構建模型X
#定義x,y占位符
x = tf.placeholder("float32", name='x')
y = tf.placeholder("float32", name='y')#模型,形參不是占位符變量
def model(a, b, c):return tf.multiply(a, b) + c#此處參數定義為形參#創建變量
w = tf.Variable(1.0, name='w')
b = tf.Variable(0.0, name="b")#構建預測,調用預測模型需要用到占位的變量
pred = model(x, w, b)#迭代次數
train_c = 15
#學習率Y
learning_rate = 0.05#L2損失函數y,需要用到占位變量
loss_fun =tf.reduce_mean(tf.square(y - pred))#梯度下降優化器
op = tf.train.GradientDescentOptimizer(learning_rate).minimize(loss_fun)sess=tf.Session()
init = tf.global_variables_initializer()
sess.run(init)fig = plt.figure()
plt.subplots_adjust(wspace =0.2, hspace =0.4)#設置子圖間距離
ax = fig.add_subplot(221)list_loss = []
list_w = []
list_b = []for i in range(train_c):for x_, y_ in zip(dx, dy): #Zip將x,y一維數組組合成一個一維數組,每個元素為x,y對_, loss = sess.run([op, loss_fun], feed_dict={x: x_, y: y_}) #將取出來的x_,y_數據輸入到占位符X,Y中去#獲取w和b的值b0 = b.eval(session=sess)w0 = w.eval(session=sess)ax.plot(dx, w0 * dx + b0)#用于可視化損失值的變化list_loss.append(loss)list_w.append(w0)list_b.append(b0)ax.set_title("隨機樣本/y=4.5x+3")
ax.scatter(dx, dy)#散點圖
ax.plot(dx, 4.5 * dx + 3, color='red')ax = fig.add_subplot(222)
ax.set_title("損失loss")
ax.plot(list_loss, c='b',marker='.')ax=fig.add_subplot(223)
ax.set_title("權重w")
plt.plot(list_w, c='g',marker='+')ax=fig.add_subplot(224)
ax.set_title("偏差b")
ax.plot(2,2,list_b, c='yellow',marker='*')#預測
x1 = 3.9
predict=sess.run(pred,feed_dict={x:x1})
print("預測值:",predict)plt.show()
附:
本文章學習自中國大學mooc-深度學習應用開發-Tensorflow實戰
總結
以上是生活随笔為你收集整理的Tensorflow深度学习应用(进阶篇)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 678. 有效的括号字
- 下一篇: 计算机视觉——简介以及人脸数目检测