為了進一步熟悉tensorflow的基本操作,下面通過乙個線性回歸的小例子簡單展示一下tensorflow的基本使用流程。
由於是簡單的線性回歸,我們自己生成乙份隨即資料作為演示就可以了。
def
createdata
(w,b):
x = np.linspace(-1,1,100)
y = w*x + b + np.random.randn(*x.shape)*w*0.1
return x,y
生成資料如下:
上面生成的資料分布是二維平面上的直線,那麼公式為y=
f(x)
=wx+
b x和y是輸入的訓練資料,用佔位符表示
#x = tf.placeholder(tf.float32,shape = trainx.shape) 預設shape=none表示任意型別
#y = tf.placeholder(tf.float32,shape = trainy.shape)
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)
需要訓練的引數是w和b,因為會在每一次迭代時更新,所以需要定義為變數
w = tf.variable(np.random.randn(),name='weight')
b = tf.variable(np.random.randn(),name='bias')
這裡公式非常簡單只有乙個函式y=
wx+b
#也可以y_pred = tf.add(tf.multiply(w,x) , b)
y_pred = w*x + b
這裡用l2損失
#也可以loss = tf.reduce_sum(tf.squared_difference(y , y_pred))
loss = tf.reduce_sum(tf.square(y - y_pred))
正則化
loss += 1e-6*tf.global_norm([w])
使用gradientdescentoptimizer優化器,tensorflow內建了一些優化器,可以直接使用。
trainop = tf.train.gradientdescentoptimizer(0.001).minimize(loss)
epochs = 1000
with tf.session() as sess:
sess.run(tf.initialize_all_variables())
for epoch in range(epochs):
w,b = sess.run([trainop,w,b],feed_dict=)
訓練結束後得到最終的w和b,畫出來看看結果是否正確:
完整**
《一線架構師實踐指南》閱讀筆記02
架構 是人們為了提高生活質量,進而為了提高生產力,接著為了提高生產效率,而做出的對目標的有機的分割。這種分割與建築的架構是一樣,對目標內部進行空間切分,又留下門窗與各部分進行連通,讓各部分相互隔離而又可以有效的溝通。就好像我們的社會,我們每個人通過自己的工作掙到錢 分割 讓後通過錢與物的交易 溝通 ...
《一線架構師實踐指南》閱讀筆記02
一 既然了解了什麼是軟體架構,那麼接下來就來看看它產生的原因 一線架構師實踐指南 中說了五點,我的理解是 架構 是人們為了提高生活質量,進而為了提高生產力,接著為了提高生產效率,而做出的對目標的有機的分割。這種分割與建築的架構是一樣,對目標內部進行空間切分,又留下門窗與各部分進行連通,讓各部分相互隔...
一線架構師實踐指南閱讀筆記02
細化架構的故事有兩個,第乙個是架構和方案的關係 方案 專案 需求 架構。第二個故事是各個職業在討論架構的定義,每個職業各抒己見,但都有盲人摸象的感覺。最後書中給的建議是盡可能全面的思考問題,盡可能全面的覆蓋多個職業。這是乙個很客觀的評價,但在實際生活中有點理想化,個人感覺應該是盡量多的討論,通過討論...