您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何使用tensorflow實現簡單邏輯回歸,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
邏輯回歸是機器學習中很簡答的一個栗子,這篇文章就是要介紹如何使用tensorflow實現一個簡單的邏輯回歸算法。
邏輯回歸可以看作只有一層網絡的前向神經網絡,并且參數連接的權重只是一個值,而非矩陣。公式為:y_predict=logistic(X*W+b),其中X為輸入,W為輸入與隱含層之間的權重,b為隱含層神經元的偏置,而logistic為激活函數,一般為sigmoid或者tanh, y_predict為最終預測結果。
邏輯回歸是一種分類器模型,需要木便函數不斷的優化參數,這里目標函數為y_predict與真實標簽Y之間的L2距離,使用隨機梯度下降算法來更新權重和偏置。 廢話不多說,貼代碼:
# -*- coding:utf-8 -*- #功能: 使用tensorflow實現一個簡單的邏輯回歸 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt #創建占位符 X=tf.placeholder(tf.float32) Y=tf.placeholder(tf.float32) #創建變量 #tf.random_normal([1])返回一個符合正太分布的隨機數 w=tf.Variable(tf.random_normal([1],name='weight')) b=tf.Variable(tf.random_normal([1],name='bias')) y_predict=tf.sigmoid(tf.add(tf.mul(X,w),b)) num_samples=400 cost=tf.reduce_sum(tf.pow(y_predict-Y,2.0))/num_samples #學習率 lr=0.01 optimizer=tf.train.AdamOptimizer().minimize(cost) #創建session 并初始化所有變量 num_epoch=500 cost_accum=[] cost_prev=0 #np.linspace()創建agiel等差數組,元素個素為num_samples xs=np.linspace(-5,5,num_samples) ys=np.sin(xs)+np.random.normal(0,0.01,num_samples) with tf.Session() as sess: #初始化所有變量 sess.run(tf.initialize_all_variables()) #開始訓練 for epoch in range(num_epoch): for x,y in zip(xs,ys): sess.run(optimizer,feed_dict={X:x,Y:y}) train_cost=sess.run(cost,feed_dict={X:x,Y:y}) cost_accum.append(train_cost) print "train_cost is:",str(train_cost) #當誤差小于10-6時 終止訓練 if np.abs(cost_prev-train_cost)<1e-6: break #保存最終的誤差 cost_prev=train_cost #畫圖 畫出每一輪訓練所有樣本之后的誤差 plt.plot(range(len(cost_accum)),cost_accum,'r') plt.title('Logic Regression Cost Curve') plt.xlabel('epoch') plt.ylabel('cost') plt.show()
關于如何使用tensorflow實現簡單邏輯回歸就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。