1. 程式人生 > 實用技巧 >寒假學習日報(二)

寒假學習日報(二)

  今日把執行環境完善了一些,hadoop分散式還沒有做,之後就去學習tensorflow了。

  我下載的tensorflow版本是2.3.0,老師下發的視訊演示的是1.0版本的,因此在寫程式碼時要注意方法的呼叫,我查了一些資料得知2.0版本的tensorflow較於1.0版本改了很多東西,因此在使用1.0版本的方法時需要寫下如下程式碼:

import tensorflow as tf
#此行程式碼不加會報TypeError錯誤,原因為已安裝的tensorflow版本為2.3,下列實驗程式碼對應的版本為1.幾版本
tf.compat.v1.disable_eager_execution()

  補上這個程式碼之後,後續的程式碼在使用方法時都需要補上【compat.v1.】如tf.Session()在1.0版本可用,而2.0版本已經沒有這個方法了,因此在使用時應該這麼寫

tf.compat.v1.Session()

  搞清楚版本差別之後,今日跟著視訊學習了使用tensorflow實現簡單的線性迴歸模型構造,下面給出程式碼和實現效果:

import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
#隨機生成1000點,圍繞直線:y=0.1x+0.3
tf.compat.v1.disable_eager_execution()
num_points=1000
vectors_set=[]
for i in range(num_points):
    x1=np.random.normal(0.0, 0.55)
    y1
=x1*0.1+0.3+np.random.normal(0.0, 0.03) vectors_set.append([x1, y1]) #生成樣本 x_data = [v[0] for v in vectors_set] y_data = [v[1] for v in vectors_set] plt.scatter(x_data,y_data,c='r')

#生成1維的W矩陣,取值是[-1,1]之間的隨機數
W=tf.Variable(tf.compat.v1.random_uniform([1], -1.0, 1.0), name='W')
#生成1維的b矩陣,初始值是0
b=tf.Variable(tf.zeros([1]), name='
b') #經過計算得出預估值y y = W*x_data+b #以預估值y和實際值y_data之間的均方誤差作為損失 loss=tf.reduce_mean(tf.square(y - y_data), name='loss') #採用梯度下降法來優化引數 optimizer = tf.compat.v1.train.GradientDescentOptimizer(0.5) #訓練的過程就是最小化這個誤差值 train=optimizer.minimize(loss, name='train') sess=tf.compat.v1.Session() init=tf.compat.v1.global_variables_initializer() sess.run(init) #輸出初始化的W,b print("W=", sess.run(W),"b=",sess.run(b),"loss=",sess.run(loss)) #執行20次訓練 for step in range(20): sess.run(train) print("W=", sess.run(W),"b=",sess.run(b),"loss=",sess.run(loss))

plt.scatter(x_data,y_data,c='r')
plt.plot(x_data,sess.run(W)*x_data+sess.run(b))
plt.show()

  可見訓練出來的W和b越來越接近0.1和0.3。

  在學習tensorflow的過程中,有些函式的使用與numpy類似,因此比較容易理解,後續需要訓練更復雜的模型,因此需要一定的數學基礎。

  此外今日還看了一些Spark的概念,由於它可以在Hadoop檔案系統中並行執行,由於分散式hadoop未能完全搭建,因此沒有進行實踐。

  最後就是今天的一些疑難點,與tensorflow和spark無關,主要是在安裝idea的時候出現了問題,總是出錯,前前後後嘗試了7-8次,最後成功安裝了2019.3.3版本,同時將maven庫路徑之類的調整了一下,大部分時間也都浪費在了這裡。

  明日目標:hadoop分散式搭建,Spark安裝並實踐,tensorflow學習。