# 三、線性回歸
在本章中,我們將開始應用機器學習項目中使用的所有標準步驟,以便使用一條使誤差和損失函數最小化的線來擬合先前給定的數據。
在上一章中,我們看到了范圍有限和許多可能解決方案的問題。 這些類型的模型還與定性評估類型相關,即基于先前的標簽為樣本分配標簽。 通常在與社會領域有關的問題中發現該結果。
我們還可能對預測(先前建模的)函數的確切數字輸出值感興趣。 這種方法類似于物理領域,可用于在事先了解一系列歷史值的情況下預測溫度或濕度或某種商品的價值,這稱為回歸分析。
在線性回歸的情況下,我們在輸入變量和輸出變量之間尋找線性關系表示的確定關系。
# 單變量線性建模函數
如前所述,在線性回歸中,我們嘗試找到一個線性方程,以最小化數據點和建模線之間的距離。
此關系可以用以下標準線性函數表示:

模型函數采用以下形式:
在這里,`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)
```
結果圖將如下所示:

加噪聲線性采樣和線性函數
# 成本函數的確定
與所有機器學習技術一樣,我們必須確定一個誤差函數,我們需要將其最小化,這表明解決問題的適當性。
用于線性回歸的最常用的`cost`函數稱為最小二乘。
## 最小二乘
為了計算函數的最小二乘誤差,我們通常會尋找一種測量點與建模線的接近程度的方法。 因此,我們定義了一個函數,用于測量每個元組`x[n]`和`y[n]`與建模線的對應值之間的距離。
對于 2D 回歸,我們有一個數字元組`(X[0],Y[0]),(X[1],Y[1])...(X[n],Y[n])`的列表,通過最小化以下函數,可以找到`β[0]`和`β[1]`的值:

簡單來說,求和代表預測值與實際值之間的歐幾里得距離之和。
進行運算的原因是,平方誤差的總和為我們提供了一個唯一且簡單的全局數,預期數與實數之差為我們提供了適當的距離,平方冪為我們提供了一個正數,這會懲罰一個整數。 多于線性的時尚。
# 最小化成本函數
下一步是設置最小化`cost`函數的方法。 在線性演算中,定位極小值任務的基本特征之一被簡化為計算函數的導數并尋找其零點。 為此,該函數必須具有導數,最好是凸的。 可以證明最小二乘函數符合這兩個條件。 這對于避免已知的局部極小問題非常有用。

損失函數表示
## 最小二乘的一般最小值
我們嘗試解決的問題(最小二乘)可以用矩陣形式表示:

在此,`J`是成本函數,具有以下解決方案:

在本章中,我們將使用迭代方法梯度下降,該方法將在以后的章節中以更通用的方式使用。
## 迭代方法 -- 梯度下降
梯度下降本身就是一種迭代方法,并且是機器學習領域中最常用的優化算法。 考慮到可以用它優化的參數組合的復雜性,它結合了簡單的方法和良好的收斂速度。
2D 線性回歸從具有隨機定義的權重或線性系數乘數的函數開始。 定義第一個值后,第二步是以以下形式應用迭代函數:

在該方程式中,我們可以輕松推導該方法的機理。 我們從一組初始系數開始,然后朝函數最大變化的相反方向移動。 `α`變量被稱為步長,將影響我們在梯度搜索方向上移動最小的距離。
最后一步是可選地測試迭代之間的更改,并查看更改是否大于`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)
```

生成的樣本和原始線性函數無噪聲
## 模型架構
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`以及應用于模型的梯度運算,如下所示:

## 成本函數描述和優化器循環
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 )
```
結果圖如下: 我們可以看到初始行如何迅速收斂為更合理的結果:

放大損失函數范圍后,我們可以看到冪和減法運算以及書面摘要,如下圖所示:

## 停止條件
## 結果描述
現在讓我們檢查參數結果,打印`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)
```

## 使用 TensorBoard 查看結果
現在,讓我們回顧一下保存在 TensorBoard 中的數據。
為了啟動 TensorBoard,您可以轉到`logs`目錄并執行以下行:
```py
$ tensorboard --logdir=.
```
TensorBoard 將加載事件和圖形文件,并且將在`6006`端口上監聽。 然后,您可以從瀏覽器轉到`localhost:6000`,然后查看 TensorBoard 儀表板,如下圖所示:

## 完整源代碼
以下是完整的源代碼:
```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))
```


# 示例 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
```

## 模型架構
在此示例中,我們將使用的模型很簡單,但是幾乎包含了處理更復雜模型所需的所有元素。
在下圖中,我們看到了整個設置的不同參與者:模型,損失函數和梯度。 TensorFlow 真正有用的功能是能夠自動微分模型和函數。

在這里,我們可以找到上一節中表示的變量的定義:`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)
```

## 損失函數說明和優化器循環
在此示例中,我們將使用常用的均方誤差,但是這次使用了多變量; 因此我們應用`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)
```

```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 的主要支持領域,其效用提供了巨大價值。
- TensorFlow 1.x 深度學習秘籍
- 零、前言
- 一、TensorFlow 簡介
- 二、回歸
- 三、神經網絡:感知器
- 四、卷積神經網絡
- 五、高級卷積神經網絡
- 六、循環神經網絡
- 七、無監督學習
- 八、自編碼器
- 九、強化學習
- 十、移動計算
- 十一、生成模型和 CapsNet
- 十二、分布式 TensorFlow 和云深度學習
- 十三、AutoML 和學習如何學習(元學習)
- 十四、TensorFlow 處理單元
- 使用 TensorFlow 構建機器學習項目中文版
- 一、探索和轉換數據
- 二、聚類
- 三、線性回歸
- 四、邏輯回歸
- 五、簡單的前饋神經網絡
- 六、卷積神經網絡
- 七、循環神經網絡和 LSTM
- 八、深度神經網絡
- 九、大規模運行模型 -- GPU 和服務
- 十、庫安裝和其他提示
- TensorFlow 深度學習中文第二版
- 一、人工神經網絡
- 二、TensorFlow v1.6 的新功能是什么?
- 三、實現前饋神經網絡
- 四、CNN 實戰
- 五、使用 TensorFlow 實現自編碼器
- 六、RNN 和梯度消失或爆炸問題
- 七、TensorFlow GPU 配置
- 八、TFLearn
- 九、使用協同過濾的電影推薦
- 十、OpenAI Gym
- TensorFlow 深度學習實戰指南中文版
- 一、入門
- 二、深度神經網絡
- 三、卷積神經網絡
- 四、循環神經網絡介紹
- 五、總結
- 精通 TensorFlow 1.x
- 一、TensorFlow 101
- 二、TensorFlow 的高級庫
- 三、Keras 101
- 四、TensorFlow 中的經典機器學習
- 五、TensorFlow 和 Keras 中的神經網絡和 MLP
- 六、TensorFlow 和 Keras 中的 RNN
- 七、TensorFlow 和 Keras 中的用于時間序列數據的 RNN
- 八、TensorFlow 和 Keras 中的用于文本數據的 RNN
- 九、TensorFlow 和 Keras 中的 CNN
- 十、TensorFlow 和 Keras 中的自編碼器
- 十一、TF 服務:生產中的 TensorFlow 模型
- 十二、遷移學習和預訓練模型
- 十三、深度強化學習
- 十四、生成對抗網絡
- 十五、TensorFlow 集群的分布式模型
- 十六、移動和嵌入式平臺上的 TensorFlow 模型
- 十七、R 中的 TensorFlow 和 Keras
- 十八、調試 TensorFlow 模型
- 十九、張量處理單元
- TensorFlow 機器學習秘籍中文第二版
- 一、TensorFlow 入門
- 二、TensorFlow 的方式
- 三、線性回歸
- 四、支持向量機
- 五、最近鄰方法
- 六、神經網絡
- 七、自然語言處理
- 八、卷積神經網絡
- 九、循環神經網絡
- 十、將 TensorFlow 投入生產
- 十一、更多 TensorFlow
- 與 TensorFlow 的初次接觸
- 前言
- 1.?TensorFlow 基礎知識
- 2. TensorFlow 中的線性回歸
- 3. TensorFlow 中的聚類
- 4. TensorFlow 中的單層神經網絡
- 5. TensorFlow 中的多層神經網絡
- 6. 并行
- 后記
- TensorFlow 學習指南
- 一、基礎
- 二、線性模型
- 三、學習
- 四、分布式
- TensorFlow Rager 教程
- 一、如何使用 TensorFlow Eager 構建簡單的神經網絡
- 二、在 Eager 模式中使用指標
- 三、如何保存和恢復訓練模型
- 四、文本序列到 TFRecords
- 五、如何將原始圖片數據轉換為 TFRecords
- 六、如何使用 TensorFlow Eager 從 TFRecords 批量讀取數據
- 七、使用 TensorFlow Eager 構建用于情感識別的卷積神經網絡(CNN)
- 八、用于 TensorFlow Eager 序列分類的動態循壞神經網絡
- 九、用于 TensorFlow Eager 時間序列回歸的遞歸神經網絡
- TensorFlow 高效編程
- 圖嵌入綜述:問題,技術與應用
- 一、引言
- 三、圖嵌入的問題設定
- 四、圖嵌入技術
- 基于邊重構的優化問題
- 應用
- 基于深度學習的推薦系統:綜述和新視角
- 引言
- 基于深度學習的推薦:最先進的技術
- 基于卷積神經網絡的推薦
- 關于卷積神經網絡我們理解了什么
- 第1章概論
- 第2章多層網絡
- 2.1.4生成對抗網絡
- 2.2.1最近ConvNets演變中的關鍵架構
- 2.2.2走向ConvNet不變性
- 2.3時空卷積網絡
- 第3章了解ConvNets構建塊
- 3.2整改
- 3.3規范化
- 3.4匯集
- 第四章現狀
- 4.2打開問題
- 參考
- 機器學習超級復習筆記
- Python 遷移學習實用指南
- 零、前言
- 一、機器學習基礎
- 二、深度學習基礎
- 三、了解深度學習架構
- 四、遷移學習基礎
- 五、釋放遷移學習的力量
- 六、圖像識別與分類
- 七、文本文件分類
- 八、音頻事件識別與分類
- 九、DeepDream
- 十、自動圖像字幕生成器
- 十一、圖像著色
- 面向計算機視覺的深度學習
- 零、前言
- 一、入門
- 二、圖像分類
- 三、圖像檢索
- 四、對象檢測
- 五、語義分割
- 六、相似性學習
- 七、圖像字幕
- 八、生成模型
- 九、視頻分類
- 十、部署
- 深度學習快速參考
- 零、前言
- 一、深度學習的基礎
- 二、使用深度學習解決回歸問題
- 三、使用 TensorBoard 監控網絡訓練
- 四、使用深度學習解決二分類問題
- 五、使用 Keras 解決多分類問題
- 六、超參數優化
- 七、從頭開始訓練 CNN
- 八、將預訓練的 CNN 用于遷移學習
- 九、從頭開始訓練 RNN
- 十、使用詞嵌入從頭開始訓練 LSTM
- 十一、訓練 Seq2Seq 模型
- 十二、深度強化學習
- 十三、生成對抗網絡
- TensorFlow 2.0 快速入門指南
- 零、前言
- 第 1 部分:TensorFlow 2.00 Alpha 簡介
- 一、TensorFlow 2 簡介
- 二、Keras:TensorFlow 2 的高級 API
- 三、TensorFlow 2 和 ANN 技術
- 第 2 部分:TensorFlow 2.00 Alpha 中的監督和無監督學習
- 四、TensorFlow 2 和監督機器學習
- 五、TensorFlow 2 和無監督學習
- 第 3 部分:TensorFlow 2.00 Alpha 的神經網絡應用
- 六、使用 TensorFlow 2 識別圖像
- 七、TensorFlow 2 和神經風格遷移
- 八、TensorFlow 2 和循環神經網絡
- 九、TensorFlow 估計器和 TensorFlow HUB
- 十、從 tf1.12 轉換為 tf2
- TensorFlow 入門
- 零、前言
- 一、TensorFlow 基本概念
- 二、TensorFlow 數學運算
- 三、機器學習入門
- 四、神經網絡簡介
- 五、深度學習
- 六、TensorFlow GPU 編程和服務
- TensorFlow 卷積神經網絡實用指南
- 零、前言
- 一、TensorFlow 的設置和介紹
- 二、深度學習和卷積神經網絡
- 三、TensorFlow 中的圖像分類
- 四、目標檢測與分割
- 五、VGG,Inception,ResNet 和 MobileNets
- 六、自編碼器,變分自編碼器和生成對抗網絡
- 七、遷移學習
- 八、機器學習最佳實踐和故障排除
- 九、大規模訓練
- 十、參考文獻