<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 三、線性回歸 在本章中,我們將開始應用機器學習項目中使用的所有標準步驟,以便使用一條使誤差和損失函數最小化的線來擬合先前給定的數據。 在上一章中,我們看到了范圍有限和許多可能解決方案的問題。 這些類型的模型還與定性評估類型相關,即基于先前的標簽為樣本分配標簽。 通常在與社會領域有關的問題中發現該結果。 我們還可能對預測(先前建模的)函數的確切數字輸出值感興趣。 這種方法類似于物理領域,可用于在事先了解一系列歷史值的情況下預測溫度或濕度或某種商品的價值,這稱為回歸分析。 在線性回歸的情況下,我們在輸入變量和輸出變量之間尋找線性關系表示的確定關系。 # 單變量線性建模函數 如前所述,在線性回歸中,我們嘗試找到一個線性方程,以最小化數據點和建模線之間的距離。 此關系可以用以下標準線性函數表示: ![Univariate linear modelling function](https://img.kancloud.cn/08/50/08502d60b3ef70c94637b9e6841ba963_258x75.jpg) 模型函數采用以下形式: 在這里,`ss0` 或 `bias`是截距,`x`的函數值為零,`ss1`是建模線的斜率。 變量`x`通常被稱為自變量,`y`被稱為因變量,但它們也可以分別稱為回歸變量和響應變量。 ## 樣本數據生成 在下面的示例中,我們將基于`ss0` = `2.0`的線,加上最大幅度為`0.4`的垂直噪聲,生成近似樣本隨機分布。 ```py In[]: #Indicate the matplotlib to show the graphics inline %matplotlib inline import matplotlib.pyplot as plt # import matplotlib import numpy as np # import numpy trX = np.linspace(-1, 1, 101) # Linear space of 101 and [-1,1] #Create The y function based on the x axis trY = 2 * trX + np.random.randn(*trX.shape) * 0.4 + 0.2 plt.figure() # Create a new figure plt.scatter(trX,trY) #Plot a scatter draw of the random datapoints # Draw one line with the line function plt.plot (trX, .2 + 2 * trX) ``` 結果圖將如下所示: ![Sample data generation](https://img.kancloud.cn/ef/32/ef32d8ffbeb079a57ab5ca7717361eaa_377x258.jpg) 加噪聲線性采樣和線性函數 # 成本函數的確定 與所有機器學習技術一樣,我們必須確定一個誤差函數,我們需要將其最小化,這表明解決問題的適當性。 用于線性回歸的最常用的`cost`函數稱為最小二乘。 ## 最小二乘 為了計算函數的最小二乘誤差,我們通常會尋找一種測量點與建模線的接近程度的方法。 因此,我們定義了一個函數,用于測量每個元組`x[n]`和`y[n]`與建模線的對應值之間的距離。 對于 2D 回歸,我們有一個數字元組`(X[0],Y[0]),(X[1],Y[1])...(X[n],Y[n])`的列表,通過最小化以下函數,可以找到`β[0]`和`β[1]`的值: ![Least squares](https://img.kancloud.cn/83/0c/830c1f134cc7791b936fe814d1adb29c_566x90.jpg) 簡單來說,求和代表預測值與實際值之間的歐幾里得距離之和。 進行運算的原因是,平方誤差的總和為我們提供了一個唯一且簡單的全局數,預期數與實數之差為我們提供了適當的距離,平方冪為我們提供了一個正數,這會懲罰一個整數。 多于線性的時尚。 # 最小化成本函數 下一步是設置最小化`cost`函數的方法。 在線性演算中,定位極小值任務的基本特征之一被簡化為計算函數的導數并尋找其零點。 為此,該函數必須具有導數,最好是凸的。 可以證明最小二乘函數符合這兩個條件。 這對于避免已知的局部極小問題非常有用。 ![Minimizing the cost function](https://img.kancloud.cn/f1/f4/f1f4ae0cbf59ade13f535a228f125a7f_495x277.jpg) 損失函數表示 ## 最小二乘的一般最小值 我們嘗試解決的問題(最小二乘)可以用矩陣形式表示: ![General minima for least squares](https://img.kancloud.cn/c8/e2/c8e2662fabea809dd4aeed34b3d82f71_566x113.jpg) 在此,`J`是成本函數,具有以下解決方案: ![General minima for least squares](https://img.kancloud.cn/92/08/920838b8fa40253c3ac7c8840b0d8738_375x100.jpg) 在本章中,我們將使用迭代方法梯度下降,該方法將在以后的章節中以更通用的方式使用。 ## 迭代方法 -- 梯度下降 梯度下降本身就是一種迭代方法,并且是機器學習領域中最常用的優化算法。 考慮到可以用它優化的參數組合的復雜性,它結合了簡單的方法和良好的收斂速度。 2D 線性回歸從具有隨機定義的權重或線性系數乘數的函數開始。 定義第一個值后,第二步是以以下形式應用迭代函數: ![Iterative methods - gradient descent](https://img.kancloud.cn/e4/26/e426d325b85438645a570d7d3bc394e5_433x146.jpg) 在該方程式中,我們可以輕松推導該方法的機理。 我們從一組初始系數開始,然后朝函數最大變化的相反方向移動。 `α`變量被稱為步長,將影響我們在梯度搜索方向上移動最小的距離。 最后一步是可選地測試迭代之間的更改,并查看更改是否大于`epsilon`或檢查是否達到了迭代次數。 如果函數不是凸函數,建議使用隨機值多次運行梯度下降,然后選擇成本值最低的系數。 在非凸函數的情況下,梯度下降最終以最小值出現,這可能是局部的。 因此,對于非凸函數,結果取決于初始值,建議將它們隨機設置多次,并在所有解決方案中選擇成本最低的解決方案。 # 示例部分 現在讓我們討論有用的庫和模塊。 ## TensorFlow 中的優化器方法 -- `train`模塊 訓練或參數優化階段是機器學習工作流程的重要組成部分。 為此,TensorFlow 具有一個`tf.train`模塊,該模塊是一組對象的幫助程序,致力于實現數據科學家所需的各種不同優化策略。 此模塊提供的主要對象稱為優化器。 ### `tf.train.Optimizer`類 `Optimizer`類允許您為`loss`函數計算梯度并將其應用于模型的不同變量。 在最著名的算法子類中,我們找到了梯度下降,Adam 和 Adagrad。 關于該類的一個主要提示是`Optimizer`類本身無法實例化。 子類之一。 如前所述,TensorFlow 允許您以符號方式定義函數,因此梯度也將以符號方式應用,從而提高了結果的準確率以及要應用于數據的操作的通用性。 為了使用`Optimizer`類,我們需要執行以下步驟: 1. 創建具有所需參數的`Optimizer`(在這種情況下為梯度下降)。 ```py opt = GradientDescentOptimizer(learning_rate= [learning rate]) ``` 2. 為`cost`函數創建一個調用`minimize`方法的操作。 ```py optimization_op = opt.minimize(cost, var_list=[variables list]) ``` `minimize`方法具有以下形式: ```py tf.train.Optimizer.minimize(loss, global_step=None, var_list=None, gate_gradients=1, aggregation_method=None, colocate_gradients_with_ops=False, name=None) ``` 主要參數如下: * `loss`:這是一個張量,其中包含要最小化的值。 * `global_step`:`Optimizer`工作后,此變量將增加 1。 * `var_list`:包含要優化的變量。 ### 提示 實際上,`optimize`方法結合了對`compute_gradients()`和`apply_gradients()`的調用。 如果要在應用梯度之前對其進行處理,請顯式調用`compute_gradients()`和`apply_gradients()`,而不要使用此函數。 如果我們只想進行一步訓練,就必須以`opt_op.run().`的形式執行`run`方法 ### 其他優化器實例類型 以下是其他`Optimizer`實例類型: * `tf.train.AdagradOptimizer`:這是一種基于參數頻率的自適應方法,學習率單調下降。 * `tf.train.AdadeltaOptimizer`:這是對 Adagrad 的改進,它的學習率沒有下降。 * `tf.train.MomentumOptimizer`:這是一種適應性方法,可解決尺寸之間的不同變化率。 * 并且還有其他更具體的參數,例如`tf.train.AdamOptimizer`,`tf.train.FtrlOptimizer`和`tf.train.RMSPropOptimizer`。 # 示例 1 -- 單變量線性回歸 現在,我們將在一個項目中工作,在該項目中,我們將應用前面幾頁中簡要介紹的所有概念。 在此示例中,我們將創建一個近似線性分布; 之后,我們將創建一個回歸模型,該模型試圖擬合線性函數以最小化誤差函數(由最小二乘法定義)。 給定一個新樣本,該模型將使我們能夠預測輸入值的結果。 ## 數據集說明 對于此示例,我們將生成一個包含線性函數并添加噪聲的合成數據集: ```py import TensorFlow as tf import numpy as np trX = np.linspace(-1, 1, 101) trY = 2 * trX + np.random.randn(*trX.shape) * 0.4 + 0.2 # create a y value which is approximately linear but with some random noise ``` 使用這些線,我們可以將線表示為散點圖和理想線函數。 ```py import matplotlib.pyplot as plt plt.scatter(trX,trY) plt.plot (trX, .2 + 2 * trX) ``` ![Dataset description](https://img.kancloud.cn/d5/dd/d5dd1195132b6a3f12670dae686f4354_377x258.jpg) 生成的樣本和原始線性函數無噪聲 ## 模型架構 1. 現在,我們創建一個變量來保存`x`和`y`軸中的值。 然后,我們將模型定義為`X`和權重`w`的乘積。 2. 然后,我們生成一些變量,并為其分配初始值以啟動模型: ```py In[]: X = tf.placeholder("float", name="X") # create symbolic variables Y = tf.placeholder("float", name = "Y") ``` 3. 現在,我們通過將`name_scope`聲明為`Model`來定義模型。 此作用域將其包含的所有變量分組,以形成具有同類實體的唯一實體。 在此范圍內,我們首先定義一個函數,該函數接收`x`軸坐標,權重(斜率)和偏差的變量。 然后,我們創建一個新變量`objects,`來保存不斷變化的參數,并使用`y_model`變量實例化該模型: ```py with tf.name_scope("Model"): def model(X, w, b): return tf.mul(X, w) + b # just define the line as X*w + b0 w = tf.Variable(-1.0, name="b0") # create a shared variable b = tf.Variable(-2.0, name="b1") # create a shared variable y_model = model(X, w, b) ``` 在儀表板上,您可以看到我們一直在收集的損失函數的圖像。 在圖部分中,放大模型時,您可以看到求和與乘法運算,參數變量`b0`和`b1`以及應用于模型的梯度運算,如下所示: ![Model architecture](https://img.kancloud.cn/68/86/68861d79b8c4d2554992caf360c05885_566x352.jpg) ## 成本函數描述和優化器循環 1. 在`Cost Function`中,我們創建了一個新的范圍以包括該組的所有操作,并使用先前創建的`y_model`來說明用于計算損失的計算出的`y`軸值。 ```py with tf.name_scope("CostFunction"): cost = (tf.pow(Y-y_model, 2)) # use sqr error for cost ``` 2. 為了定義選擇的`optimizer,`,我們初始化一個`GradientDescentOptimizer`,步驟將是`0.01`,這似乎是收斂的合理起點。 ```py train_op = tf.train.GradientDescentOptimizer(0.05).minimize(cost) ``` 3. 現在是時候創建會話并初始化要保存在 TensorBoard 中進行查看的變量了。 在此示例中,我們將為每個迭代保存一個標量變量以及最后一個樣本的誤差結果。 我們還將圖結構保存在文件中以供查看。 ```py sess = tf.Session() init = tf.initialize_all_variables() tf.train.write_graph(sess.graph, '/home/ubuntu/linear','graph.pbtxt') cost_op = tf.scalar_summary("loss", cost) merged = tf.merge_all_summaries() sess.run(init) writer = tf.train.SummaryWriter('/home/ubuntu/linear', sess.graph) ``` 4. 對于模型訓練,我們將目標設置為 100 次迭代,然后將每個樣本發送到梯度下降的`train`操作。 每次迭代后,我們繪制建模線并將最后一個誤差的值添加到`summary`中。 ```py In[]: for i in range(100): for (x, y) in zip(trX, trY): sess.run(train_op, feed_dict={X: x, Y: y}) summary_str = sess.run(cost_op, feed_dict={X: x, Y: y}) writer.add_summary(summary_str, i) b0temp=b.eval(session=sess) b1temp=w.eval(session=sess) plt.plot (trX, b0temp + b1temp * trX ) ``` 結果圖如下: 我們可以看到初始行如何迅速收斂為更合理的結果: ![Cost function description and Optimizer loop](https://img.kancloud.cn/b5/db/b5db108659094a2fe86ffc804fe7138f_377x258.jpg) 放大損失函數范圍后,我們可以看到冪和減法運算以及書面摘要,如下圖所示: ![Cost function description and Optimizer loop](https://img.kancloud.cn/ec/f5/ecf5634650043a124704006fb5e900c0_566x283.jpg) ## 停止條件 ## 結果描述 現在讓我們檢查參數結果,打印`w`和`b`變量的`run`輸出: ```py printsess.run(w) # Should be around 2 printsess.run(b) #Should be around 0.2 2.09422 0.256044 ``` 現在是時候再次以圖形方式查看數據和建議的最后一行。 ```py plt.scatter(trX,trY) plt.plot (trX, testb + trX * testw) ``` ![Results description](https://img.kancloud.cn/c7/5e/c75e378723a1b7db48b0388bc2cf6e0f_336x222.jpg) ## 使用 TensorBoard 查看結果 現在,讓我們回顧一下保存在 TensorBoard 中的數據。 為了啟動 TensorBoard,您可以轉到`logs`目錄并執行以下行: ```py $ tensorboard --logdir=. ``` TensorBoard 將加載事件和圖形文件,并且將在`6006`端口上監聽。 然后,您可以從瀏覽器轉到`localhost:6000`,然后查看 TensorBoard 儀表板,如下圖所示: ![Reviewing results with TensorBoard](https://img.kancloud.cn/3d/17/3d17b4fd2f165168e6c7a665ce52e2c3_566x278.jpg) ## 完整源代碼 以下是完整的源代碼: ```py import matplotlib.pyplot as plt # import matplotlib import numpy as np # import numpy import tensorflow as tf import numpy as np trX = np.linspace(-1, 1, 101) #Create a linear space of 101 points between 1 and 1 trY = 2 * trX + np.random.randn(*trX.shape) * 0.4 + 0.2 #Create The y function based on the x axis plt.figure() # Create a new figure plt.scatter(trX,trY) #Plot a scatter draw of the random datapoints plt.plot (trX, .2 + 2 * trX) # Draw one line with the line function get_ipython().magic(u'matplotlib inline') import matplotlib.pyplot as plt import tensorflow as tf import numpy as np trX = np.linspace(-1, 1, 101) trY = 2 * trX + np.random.randn(*trX.shape) * 0.4 + 0.2 # create a y value which is approximately linear but with some random noise plt.scatter(trX,trY) plt.plot (trX, .2 + 2 * trX) X = tf.placeholder("float", name="X") # create symbolic variables Y = tf.placeholder("float", name = "Y") withtf.name_scope("Model"): def model(X, w, b): returntf.mul(X, w) + b # We just define the line as X*w + b0 w = tf.Variable(-1.0, name="b0") # create a shared variable b = tf.Variable(-2.0, name="b1") # create a shared variable y_model = model(X, w, b) withtf.name_scope("CostFunction"): cost = (tf.pow(Y-y_model, 2)) # use sqr error for cost function train_op = tf.train.GradientDescentOptimizer(0.05).minimize(cost) sess = tf.Session() init = tf.initialize_all_variables() tf.train.write_graph(sess.graph, '/home/ubuntu/linear','graph.pbtxt') cost_op = tf.scalar_summary("loss", cost) merged = tf.merge_all_summaries() sess.run(init) writer = tf.train.SummaryWriter('/home/ubuntu/linear', sess.graph) fori in range(100): for (x, y) in zip(trX, trY): sess.run(train_op, feed_dict={X: x, Y: y}) summary_str = sess.run(cost_op, feed_dict={X: x, Y: y}) writer.add_summary(summary_str, i) b0temp=b.eval(session=sess) b1temp=w.eval(session=sess) plt.plot (trX, b0temp + b1temp * trX ) printsess.run(w) # Should be around 2 printsess.run(b) #Should be around 0.2 plt.scatter(trX,trY) plt.plot (trX, sess.run(b) + trX * sess.run(w)) ``` ![Full source code](https://img.kancloud.cn/b5/db/b5db108659094a2fe86ffc804fe7138f_377x258.jpg) ![Full source code](https://img.kancloud.cn/c7/5e/c75e378723a1b7db48b0388bc2cf6e0f_336x222.jpg) # 示例 2 -- 多元線性回歸 在此示例中,我們將處理涉及多個變量的回歸問題。 這將基于 1993 年波士頓某些郊區不同價格的研究數據集。 它最初包含 13 個變量以及該處房產的平均價格。 與原始文件相比,文件中唯一的變化是刪除了一個變量`(b)`,該變量在種族上對不同的郊區進行了概述。 除此之外,我們將選擇一些我們認為具有線性條件可以建模的良好條件的變量。 ## 有用的庫和方法 本部分包含一個有用的庫列表,我們將在此示例中以及本書其余部分中 TensorFlow 之外的部分中使用這些庫,以幫助解決我們將要解決的各種問題。 ### Pandas 庫 當我們想快速讀取并獲得有關正常大小的數據文件的提示時,創建讀取緩沖區和其他附加機制可能會減少開銷。 這是熊貓當前的現實生活用例之一。 這是 [Pandas 網站](http://pandas.pydata.org/)的摘錄: > Pandas 是 BSD 許可的開放源代碼庫,為 Python 提供了高表現,易于使用的數據結構和數據分析工具。 熊貓的主要特征如下: * 它具有 CSV 和文本文件,MS Excel,SQL 數據庫甚至面向科學的 HDF5 格式的讀寫文件功能。 * CSV 文件加載例程自動識別列標題并支持更直接的列尋址 * 數據結構自動轉換為 NumPy 多維數組 ## 數據集說明 數據集以 CSV 文件表示,我們將使用 Pandas 庫打開它。 數據集包含以下變量: * `CRIM`:按城鎮劃分的人均犯罪率 * `ZN`:劃定面積超過 25,000 平方英尺的住宅用地的比例。 * `INDUS`:每個城鎮的非零售業務英畝比例 * `CHAS`:查爾斯河虛擬變量(如果區域限制河流,則為 1;否則為 0) * `NOX`:一氧化氮濃度(百萬分之幾) * `RM`:每個住宅的平均房間數 * `AGE`:1940 年之前建造的自有住房的比例 * `DIS`:到五個波士頓就業中心的加權距離 * `RAD`:徑向公路的可達性指數 * `TAX`:每 10,000 美元的全值財產稅率 * `PTRATIO`:按城鎮劃分的師生比率 * `LSTAT`:人口狀況降低百分比 * `MEDV`:自有住房的中位數價值,以 1000 美元為單位 在這里,我們有一個簡單的程序,它將讀取數據集并創建數據的詳細說明: ```py import tensorflow.contrib.learn as skflow fromsklearn import datasets, metrics, preprocessing import numpy as np import pandas as pd df = pd.read_csv("data/boston.csv", header=0) printdf.describe() ``` 這將輸出數據集變量的統計摘要。 前六個結果如下: ```py CRIM ZN INDUS CHAS NOX RM \ count 506.000000 506.000000 506.000000 506.000000 506.000000 506.000000 mean 3.613524 11.363636 11.136779 0.069170 0.554695 6.284634 std 8.601545 23.322453 6.860353 0.253994 0.115878 0.702617 min 0.006320 0.000000 0.460000 0.000000 0.385000 3.561000 25% 0.082045 0.000000 5.190000 0.000000 0.449000 5.885500 50% 0.256510 0.000000 9.690000 0.000000 0.538000 6.208500 75% 3.677082 12.500000 18.100000 0.000000 0.624000 6.623500 max 88.976200 100.000000 27.740000 1.000000 0.871000 8.780000 ``` ![Dataset description](https://img.kancloud.cn/f7/bc/f7bcff5b7756ece192151f5fd904d995_566x425.jpg) ## 模型架構 在此示例中,我們將使用的模型很簡單,但是幾乎包含了處理更復雜模型所需的所有元素。 在下圖中,我們看到了整個設置的不同參與者:模型,損失函數和梯度。 TensorFlow 真正有用的功能是能夠自動微分模型和函數。 ![Model architecture](https://img.kancloud.cn/9b/24/9b2454c28d2826f3e4b6b3f9e5bf83d3_500x532.jpg) 在這里,我們可以找到上一節中表示的變量的定義:`w`,`b`和模型線性方程。 ```py X = tf.placeholder("float", name="X") # create symbolic variables Y = tf.placeholder("float", name = "Y") withtf.name_scope("Model"): w = tf.Variable(tf.random_normal([2], stddev=0.01), name="b0") # create a shared variable b = tf.Variable(tf.random_normal([2], stddev=0.01), name="b1") # create a shared variable def model(X, w, b): returntf.mul(X, w) + b # We just define the line as X*w + b0 y_model = model(X, w, b) ``` ![Model architecture](https://img.kancloud.cn/84/7d/847d20cd16cb4e479c9cf672efc3ec42_566x333.jpg) ## 損失函數說明和優化器循環 在此示例中,我們將使用常用的均方誤差,但是這次使用了多變量; 因此我們應用`reduce_mean`來收集不同維度上的誤差值: ```py withtf.name_scope("CostFunction"): cost = tf.reduce_mean(tf.pow(Y-y_model, 2)) # use sqr error for cost function train_op = tf.train.AdamOptimizer(0.1).minimize(cost) ``` ![Loss function description and Optimizer loop](https://img.kancloud.cn/6f/08/6f0810011f36347c93301f67420adce9_301x539.jpg) ```py for a in range (1,10): cost1=0.0 fori, j in zip(xvalues, yvalues): sess.run(train_op, feed_dict={X: i, Y: j}) cost1+=sess.run(cost, feed_dict={X: i, Y: i})/506.00 #writer.add_summary(summary_str, i) xvalues, yvalues = shuffle (xvalues, yvalues) ``` ## 停止條件 停止條件將僅由針對所有數據樣本訓練參數來確定外循環中確定的周期數。 ## 結果描述 結果如下: ```py 1580.53295174 [ 2.25225258 1.30112672] [ 0.80297691 0.22137061] 1512.3965525 [ 4.62365675 2.90244412] [ 1.16225874 0.28009811] 1495.47174799 [ 6.52791834 4.29297304] [ 0.824792270.17988272] ... 1684.6247849 [ 29.71323776 29.96078873] [-0.68271929 -0.13493828] 1688.25864746 [ 29.78564262 30.09841156] [-0.58272243 -0.08323665] 1684.27538102 [ 29.75390816 30.13044167] [-0.59861398 -0.11895057] ``` 從結果中我們可以看到,在訓練的最后階段,建模線同時基于以下系數: `price = 0.6 x Industry + 29.75` `price = 0.1 x Age + 30.13` ## 完整源代碼 以下是完整的源代碼: ```py import matplotlib.pyplot as plt import tensorflow as tf import tensorflow.contrib.learn as skflow from sklearn.utils import shuffle import numpy as np import pandas as pd df = pd.read_csv("data/boston.csv", header=0) printdf.describe() f, ax1 = plt.subplots() plt.figure() # Create a new figure y = df['MEDV'] for i in range (1,8): number = 420 + i ax1.locator_params(nbins=3) ax1 = plt.subplot(number) plt.title(list(df)[i]) ax1.scatter(df[df.columns[i]],y) #Plot a scatter draw of the datapoints plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0) X = tf.placeholder("float", name="X") # create symbolic variables Y = tf.placeholder("float", name = "Y") with tf.name_scope("Model"): w = tf.Variable(tf.random_normal([2], stddev=0.01), name="b0") # create a shared variable b = tf.Variable(tf.random_normal([2], stddev=0.01), name="b1") # create a shared variable def model(X, w, b): return tf.mul(X, w) + b # We just define the line as X*w + b0 y_model = model(X, w, b) with tf.name_scope("CostFunction"): cost = tf.reduce_mean(tf.pow(Y-y_model, 2)) # use sqr error for cost function train_op = tf.train.AdamOptimizer(0.001).minimize(cost) sess = tf.Session() init = tf.initialize_all_variables() tf.train.write_graph(sess.graph, '/home/bonnin/linear2','graph.pbtxt') cost_op = tf.scalar_summary("loss", cost) merged = tf.merge_all_summaries() sess.run(init) writer = tf.train.SummaryWriter('/home/bonnin/linear2', sess.graph) xvalues = df[[df.columns[2], df.columns[4]]].values.astype(float) yvalues = df[df.columns[12]].values.astype(float) b0temp=b.eval(session=sess) b1temp=w.eval(session=sess) for a in range (1,10): cost1=0.0 for i, j in zip(xvalues, yvalues): sess.run(train_op, feed_dict={X: i, Y: j}) cost1+=sess.run(cost, feed_dict={X: i, Y: i})/506.00 #writer.add_summary(summary_str, i) xvalues, yvalues = shuffle (xvalues, yvalues) print (cost1) b0temp=b.eval(session=sess) b1temp=w.eval(session=sess) print (b0temp) print (b1temp) #plt.plot (trX, b0temp + b1temp * trX ) ``` # 總結 在本章中,我們使用 TensorFlow 的訓練工具構建了第一個具有標準損失函數的完整模型。 我們還建立了一個多元模型來說明多個維度來計算回歸。 除此之外,我們使用 TensorBoard 在訓練階段觀察變量的行為。 在下一章中,我們將開始使用非線性模型,通過它我們將更接近神經網絡領域,這是 TensorFlow 的主要支持領域,其效用提供了巨大價值。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看