# 三、Keras 101
Keras 是一個高級庫,允許使用 TensorFlow 作為后端深度學習庫。 TensorFlow 團隊將 TrasorFlow Core 中的 Keras 作為模塊`tf.keras`。除了 TensorFlow 之外,Keras 在撰寫本書時還支持 Theano 和 CNTK。
以下 Keras 的指導原則使其在深度學習社區中非常受歡迎:
* 極簡主義提供一致且簡單的 API
* 模塊化允許將各種元素表示為可插拔模塊
* 將新模塊添加為類和函數的可擴展性
* 用于代碼和模型配置的 Python 原生
* 開箱即用的通用網絡架構,支持 CNN,RNN 或兩者的組合
在本書的其余部分中,我們將學習如何使用低級 TensorFlow API 和高級 Keras API 構建不同類型的深度學習和機器學習模型。
我們將在本章中介紹以下主題:
* 安裝 Keras
* 在 Keras 中創建模型的工作流程
* 使用順序和函數式 API 創建 Keras 模型
* Keras 層
* 使用順序和函數式 API 創建和添加層
* 編譯 Keras 模型
* 訓練 Keras 模型
* 使用 Keras 模型進行預測
* Keras 的附加模塊
* MNIST 數據集的 Keras 序列模型示例
# 安裝 Keras
使用以下命令可以在 Python 3 中安裝 Keras:
```py
pip3 install keras
```
[要在其他環境或源代碼中安裝 Keras,請參閱此鏈接](https://keras.io/#installation)。
# Keras 中的神經網絡模型
Keras 中的神經網絡模型將定義為層圖。 Keras 中的模型可以使用順序或函數式 API 創建。函數式和順序 API 都可用于構建任何類型的模型。函數式 API 可以更輕松地構建具有多個輸入,多個輸出和共享層的復雜模型。
因此,根據經驗,我們已經看到工程師將順序 API 用于從簡單層構建的簡單模型,以及用于涉及分支和共享層的復雜模型的函數式 API。我們還觀察到,使用函數式 API 構建簡單模型可以更輕松地將模型擴展為具有分支和共享的復雜模型。因此,對于我們的工作,我們總是使用函數式 API。
# 在 Keras 中創建模型的工作流程
Keras 的簡單工作流程如下:
1. 創建模型
2. 創建層并將其添加到模型中
3. 編譯模型
4. 訓練模型
5. 使用該模型進行預測或評估
我們來看看每個步驟。
您可以使用代碼包中包含的 Jupyter 筆記本`ch-03_Keras_101`來遵循本章中的代碼示例。 嘗試修改筆記本中的代碼以探索各種選項。
# 創建 Keras 模型
可以使用順序 API 或函數式 API 創建 Keras 模型。以下兩小節給出了以兩種方式創建模型的示例 。
# 用于創建 Keras 模型的順序 API
在順序 API 中,使用以下代碼創建空模型:
```py
model = Sequential()
```
您現在可以將層添加到此模型中,我們將在下一節中看到。
或者,您也可以將所有層作為列表傳遞給構造器。例如,我們通過使用以下代碼將它們傳遞給構造器來添加四個層:
```py
model = Sequential([ Dense(10, input_shape=(256,)),
Activation('tanh'),
Dense(10),
Activation('softmax')
])
```
# 用于創建 Keras 模型的函數式 API
在函數式 API 中,模型創建為`Model`類的一個實例,它接受輸入和輸出參數。輸入和輸出參數分別代表一個或多個輸入和輸出張量。
例如,使用以下代碼從函數式 API 實例化模型:
```py
model = Model(inputs=tensor1, outputs=tensor2)
```
在上面的代碼中,`tensor1`和`tensor2`是張量或對象,可以像張量一樣對待,例如,Keras `layer`對象。
如果有多個輸入和輸出張量,則可以將它們作為列表傳遞,如以下示例所示:
```py
model = Model(inputs=[i1,i2,i3], outputs=[o1,o2,o3])
```
# Keras 層
Keras 為網絡架構的簡單構建提供了幾個內置層類。以下部分概述和描述了 Keras2 在撰寫本書時提供的各種類型的層。
# Keras 核心層
Keras 核心層實現基本操作,幾乎用于各種網絡架構。下表給出了 Keras2 提供的層的摘要和說明:
| **層名稱** | **描述** |
| --- | --- |
| `Dense` | 這是一個簡單的完全連接的神經網絡層。該層生成以下函數的輸出:`激活(輸入 x 權重 + 偏差)`,其中激活是指傳遞給層的激活函數,默認為`None`。 |
| `Activation` | 該層將指定的激活函數應用于輸出。該層生成以下函數的輸出:`激活(輸入)`,其中激活是指傳遞給該層的激活函數。以下激活函數可用于實例化層:`softmax`,`elu`,`selu`,`softplus`,`softsign`,`relu`,`tanh`,`sigmoid`,`hard_sigmoid`和`linear` |
| `Dropout` | 該層以指定的丟棄率將丟棄正則化應用于輸入。 |
| `Flatten` | 該層使輸入變平,即對于三維輸入,它變平并產生一維輸出。 |
| `Reshape` | 此層將輸入轉換為指定的形狀。 |
| `Permute` | 此層按照指定的模式重新排序輸入尺寸。 |
| `RepeatVector` | 該層以給定次數重復輸入。因此,如果輸入是 2D 張量的形狀`(#samples, #feature)`并且該層被賦予`n`次重復,那么輸出將是 3D 張量的形狀`(#samples, n, #feature)`。 |
| `Lambda` | 該層將提供的函數包裝為層。因此,輸入通過提供的自定義函數傳遞以產生輸出。該層為 Keras 用戶提供了最終的可擴展性,可以將自己的自定義函數添加為層。 |
| `ActivityRegularization` | 該層將 L1 或 L2 或兩種正則化的組合應用于其輸入。該層應用于激活層的輸出或具有激活函數的層的輸出。 |
| `Masking` | 此層在輸入張量中屏蔽或跳過這些時間步長,其中輸入張量中的所有值都等于作為層參數提供的屏蔽值。 |
# Keras 卷積層
這些層為卷積神經網絡實現了不同類型的卷積,采樣和裁剪操作:
| **層名稱** | **描述** |
| --- | --- |
| `Conv1D` | 該層將單個空間或時間維度上的卷積應用于輸入。 |
| `Conv2D` | 該層將二維卷積應用于輸入。 |
| `SeparableConv2D` | 該層在每個輸入通道上應用深度方式空間卷積,然后是逐點卷積,將所得到的輸出通道混合在一起。 |
| `Conv2DTranspose` | 該層將卷積的形狀恢復為產生這些卷積的輸入的形狀。 |
| `Conv3D` | 該層將三維卷積應用于輸入。 |
| `Cropping1D` | 該層沿時間維度裁剪輸入數據。 |
| `Cropping2D` | 此層沿空間維度裁剪輸入數據,例如圖像的寬度和高度。 |
| `Cropping3D` | 該層沿著時空裁剪輸入數據,即所有三維。 |
| `UpSampling1D` | 該層按時間軸指定的時間重復輸入數據。 |
| `UpSampling2D` | 此層沿兩個維度按指定時間重復輸入數據的行和列維度。 |
| `UpSampling3D` | 該層按三個維度的指定時間重復輸入數據的三個維度。 |
| `ZeroPadding1D` | 該層將零添加到時間維度的開頭和結尾。 |
| `ZeroPadding2D` | 此層將行和列的零添加到 2D 張量的頂部,底部,左側或右側。 |
| `ZeroPadding3D` | 該層將零添加到 3D 張量的三個維度。 |
# Keras 池化層
這些層為卷積神經網絡實現不同的池化操作:
| **層名稱** | **描述** |
| --- | --- |
| `MaxPooling1D` | 該層實現一維輸入數據的最大池化操作。 |
| `MaxPooling2D` | 該層實現二維輸入數據的最大池化操作。 |
| `MaxPooling3D` | 該層實現三維輸入數據的最大池化操作。 |
| `AveragePooling1D` | 該層實現一維輸入數據的平均池化操作。 |
| `AveragePooling2D` | 該層實現二維輸入數據的平均池化操作。 |
| `AveragePooling3D` | 該層實現三維輸入數據的平均吃阿虎操作。 |
| `GlobalMaxPooling1D` | 該層實現一維輸入數據的全局最大池化操作。 |
| `GlobalAveragePooling1D` | 該層實現一維輸入數據的全局平均池化操作。 |
| `GlobalMaxPooling2D` | 該層實現二維輸入數據的全局最大池化操作。 |
| `GlobalAveragePooling2D` | 該層實現二維輸入數據的全局平均池化操作。 |
# Keras 本地連接層
這些層在卷積神經網絡中很有用:
| **層名稱** | **描述** |
| --- | --- |
| `LocallyConnected1D` | 該層通過在輸入的每個不同補丁上應用不同的濾波器組,將單個空間或時間維度上的卷積應用于輸入,從而不共享權重。 |
| `LocallyConnected2D` | 該層通過在輸入的每個不同補丁上應用不同的濾波器組,將兩個維上的卷積應用于輸入,從而不共享權重。 |
# Keras 循環層
這些層實現循環神經網絡的不同變體:
| **層名稱** | **描述** |
| --- | --- |
| `SimpleRNN` | 該層實現了完全連接的循環神經網絡。 |
| `GRU` | 該層實現了門控循環單元網絡。 |
| `LSTM` | 該層實現了長期短期記憶網絡。 |
# Keras 嵌入層
目前,只有一個嵌入層選項可用:
| **層名稱** | **描述** |
| --- | --- |
| `Embedding` | 該層采用由下標組成的 2D 張量,形狀為`(batch_size, sequence_length)`,并產生由形狀`(batch_size, sequence_length, output_dim)`的密集向量組成的張量。 |
# Keras 合并層
這些層合并兩個或多個輸入張量,并通過應用每個層表示的特定操作產生單個輸出張量:
| **層名稱** | **描述** |
| --- | --- |
| `Add` | 該層計算輸入張量的逐元素加法。 |
| `Multiply` | 該層計算輸入張量的逐元素乘法 |
| `Average` | 該層計算輸入張量的逐元素平均值。 |
| `Maximum` | 該層計算輸入張量的逐元素最大值。 |
| `Concatenate` | 此層沿指定軸連接輸入張量。 |
| `Dot` | 該層計算兩個輸入張量中樣本之間的點積。 |
| `add`,`multiply`,`average`,`maximum`,`concatenate`和`dot` | 這些函數表示此表中描述的各個合并層的函數接口。 |
# Keras 高級激活層
這些層實現了高級激活函數,這些函數無法作為簡單的底層后端函數實現。它們的操作類似于我們在核心層部分中介紹的`Activation()`層:
| **層名稱** | **描述** |
| --- | --- |
| `LeakyReLU` | 該層計算`ReLU`激活函數的泄漏版本。 |
| `PReLU` | 該層計算參數化`ReLU`激活函數。 |
| `ELU` | 該層計算指數線性單元激活函數。 |
| `ThresholdedReLU` | 該層計算閾值版本的`ReLU`激活函數。 |
# Keras 正則化層
目前,只有一個標準化層可用:
| **層名稱** | **描述** |
| --- | --- |
| `BatchNormalization` | 該層標準化前一層的每個批量的輸出,使得該層的輸出近似為具有接近零的平均值和接近 1 的標準偏差。 |
# Keras 噪音層
這些層可以添加到模型中,以防止過擬合添加噪音;它們也被稱為正則化層。這些層的操作方式與核心層部分中的`Dropout()`和`ActivityRegularizer()`層相同。
| **層名稱** | **描述** |
| --- | --- |
| `GaussianNoise` | 該層將附加的零中心高斯噪聲應用于輸入。 |
| `GaussianDropout` | 該層將乘法的單中心高斯噪聲應用于輸入。 |
| `AlphaDropout` | 該層丟棄一定百分比的輸入,使得丟棄后輸出的均值和方差與輸入的均值和方差緊密匹配。 |
# 將層添加到 Keras 模型
上一節中提到的所有層都需要添加到我們之前創建的模型中。在以下部分中,我們將介紹如何使用函數式 API 和順序 API 添加層。
# 用于向 Keras 模型添加層的順序 API
在順序 API 中,可以通過實例化前面部分中給出的某個層類型的對象來創建層。然后使用`model.add()`函數將創建的層添加到模型中。作為示例,我們將創建一個模型,然后為其添加兩個層:
```py
model = Sequential()
model.add(Dense(10, input_shape=(256,))
model.add(Activation('tanh'))
model.add(Dense(10))
model.add(Activation('softmax'))
```
# 用于向 Keras 模型添加層的函數式 API
在函數式 API 中,首先以函數方式創建層,然后在創建模型時,輸入和輸出層作為張量參數提供,如我們在上一節。
這是一個例子:
1. 首先,創建輸入層:
```py
input = Input(shape=(64,))
```
1. 接下來,以函數方式從輸入層創建密集層:
```py
hidden = Dense(10)(inputs)
```
1. 以同樣的方式,以函數方式創建更多隱藏層,構建在前面的層之上:
```py
hidden = Activation('tanh')(hidden)
hidden = Dense(10)(hidden)
output = Activation('tanh')(hidden)
```
1. 最后,使用輸入和輸出層實例化模型對象:
```py
model = Model(inputs=input, outputs=output)
```
有關創建順序和函數式 Keras 模型的更深入細節,您可以閱讀由 Antonio Gulli 和 Sujit Pal,Packt Publishing,2017 年出版的題為 Deep Learning with Keras 的書。
# 編譯 Keras 模型
前面部分中構建的模型需要使用`model.compile()`方法進行編譯,然后才能用于訓練和預測。`compile()`方法的完整簽名如下:
```py
compile(self, optimizer, loss, metrics=None, sample_weight_mode=None)
```
`compile`方法有三個參數:
* `optimizer`:您可以指定自己的函數或 Keras 提供的函數之一。此函數用于更新優化迭代中的參數。 Keras 提供以下內置優化器函數:
* `SGD`
* `RMSprop`
* `Adagrad`
* `Adadelta`
* `Adam`
* `Adamax`
* `Nadam`
* `loss`:您可以指定自己的損失函數或使用提供的損失函數之一。優化器函數優化參數,以便最小化此損失函數的輸出。 Keras 提供以下損失函數:
* `mean_squared_error`
* `mean_absolute_error`
* `mean_absolute_pecentage_error`
* `mean_squared_logarithmic_error`
* `squared_hinge`
* `hinge`
* `categorical_hinge`
* `sparse_categorical_crossentropy`
* `binary_crossentropy`
* `poisson`
* `cosine proximity`
* ``binary_accuracy``
* `categorical_accuracy`
* `sparse_categorical_accuracy`
* `top_k_categorical_accuracy`
* `sparse_top_k_categorical_accuracy`
* `metrics`:第三個參數是訓練模型時需要收集的指標列表。如果啟用了詳細輸出,則會為每次迭代打印度量標準。指標就像損失函數;一些由 Keras 提供,能夠編寫您自己的度量函數。所有損失函數也可用作度量函數。
# 訓練 Keras 模型
訓練 Keras 模型就像調用`model.fit()`方法一樣簡單。該方法的完整簽名如下:
```py
fit(self, x, y, batch_size=32, epochs=10, verbose=1, callbacks=None,
validation_split=0.0, validation_data=None, shuffle=True,
class_weight=None, sample_weight=None, initial_epoch=0)
```
我們不會詳細介紹這種方法的參數; 您可以在 [Keras 網站](https://keras.io/models/sequential/)上閱讀詳細信息。
對于我們之前創建的示例模型,使用以下代碼訓練模型:
```py
model.fit(x_data, y_labels)
```
# 使用 Keras 模型進行預測
經過訓練的模型可用于使用`model.predict()`方法來預測值,或用`model.evaluate()`方法評估模型。
這兩種方法的簽名如下:
```py
predict(self, x, batch_size=32, verbose=0)
```
```py
evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None)
```
# Keras 的附加模塊
Keras 提供了幾個補充基本工作流程的附加模塊(附加函數在本章開頭描述)。部分模塊如下:
* `preprocessing`模塊提供了幾種預處理序列,圖像和文本數據的函數。
* `datasets`模塊提供了多種函數,可以快速訪問幾個流行的數據集,如 CIFAR10 圖像,CIFAR100 圖像,IMDB 電影評論,路透社新聞專線主題,MNIST 手寫數字和波士頓房價。
* `initializers`模塊提供了幾種設置層初始隨機權重參數的函數,如`Zeros`,`Ones`,`Constant`,`RandomNormal`,`RandomUniform`,`TruncatedNormal`,`VarianceScaling`,`Orthogonal`,`Identity`,`lecun_normal`,`lecun_uniform`,`glorot_normal`,`glorot_uniform`,`he_normal`和`he_uniform`。
* `models`模塊提供了幾種恢復模型架構和權重的函數,如`model_from_json`,`model_from_yaml`,和`load_model`。可以使用`model.to_yaml()`和`model.to_json()`方法保存模型架構。通過調用`model.save()`方法可以保存模型權重。權重保存在 HDF5 文件中。
* `applications`模塊提供了幾種預先構建和預訓練的模型,例如 Xception,VGG16,VGG19,ResNet50,InceptionV3,InceptionResNetV2 和 MobileNet。我們將學習如何使用預建模型來預測我們的數據集。我們還將學習,如何使用來自略有不同的域的數據集,再訓練`applications`模塊中的預訓練模型。
這就結束了我們對 Keras 的簡要介紹,這是 TensorFlow 的高級框架。我們將在本書中提供使用 Keras 構建模型的示例。
# 用于 MNIST 數據集的 Keras 序列模型示例
以下是構建簡單多層感知機(在第 5 章中詳細介紹)的一個小例子,用于對 MNIST 集中的手寫數字進行分類:
```py
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import SGD
from keras import utils
import numpy as np
# define some hyper parameters
batch_size = 100
n_inputs = 784
n_classes = 10
n_epochs = 10
# get the data
(x_train, y_train), (x_test, y_test) = mnist.load_data()
# reshape the two dimensional 28 x 28 pixels
# sized images into a single vector of 784 pixels
x_train = x_train.reshape(60000, n_inputs)
x_test = x_test.reshape(10000, n_inputs)
# convert the input values to float32
x_train = x_train.astype(np.float32)
x_test = x_test.astype(np.float32)
# normalize the values of image vectors to fit under 1
x_train /= 255
x_test /= 255
# convert output data into one hot encoded format
y_train = utils.to_categorical(y_train, n_classes)
y_test = utils.to_categorical(y_test, n_classes)
# build a sequential model
model = Sequential()
# the first layer has to specify the dimensions of the input vector
model.add(Dense(units=128, activation='sigmoid', input_shape=(n_inputs,)))
# add dropout layer for preventing overfitting
model.add(Dropout(0.1))
model.add(Dense(units=128, activation='sigmoid'))
model.add(Dropout(0.1))
# output layer can only have the neurons equal to the number of outputs
model.add(Dense(units=n_classes, activation='softmax'))
# print the summary of our model
model.summary()
# compile the model
model.compile(loss='categorical_crossentropy',
optimizer=SGD(),
metrics=['accuracy'])
# train the model
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=n_epochs)
# evaluate the model and print the accuracy score
scores = model.evaluate(x_test, y_test)
print('\n loss:', scores[0])
print('\n accuracy:', scores[1])
```
我們從描述和訓練 Keras 模型得到以下輸出:
```py
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_7 (Dense) (None, 128) 100480
_________________________________________________________________
dropout_5 (Dropout) (None, 128) 0
_________________________________________________________________
dense_8 (Dense) (None, 128) 16512
_________________________________________________________________
dropout_6 (Dropout) (None, 128) 0
_________________________________________________________________
dense_9 (Dense) (None, 10) 1290
=================================================================
Total params: 118,282
Trainable params: 118,282
Non-trainable params: 0
_________________________________________________________________
Epoch 1/10
60000/60000 [========================] - 3s - loss: 2.3018 - acc: 0.1312
Epoch 2/10
60000/60000 [========================] - 2s - loss: 2.2395 - acc: 0.1920
Epoch 3/10
60000/60000 [========================] - 2s - loss: 2.1539 - acc: 0.2843
Epoch 4/10
60000/60000 [========================] - 2s - loss: 2.0214 - acc: 0.3856
Epoch 5/10
60000/60000 [========================] - 3s - loss: 1.8269 - acc: 0.4739
Epoch 6/10
60000/60000 [========================] - 2s - loss: 1.5973 - acc: 0.5426
Epoch 7/10
60000/60000 [========================] - 2s - loss: 1.3846 - acc: 0.6028
Epoch 8/10
60000/60000 [========================] - 3s - loss: 1.2133 - acc: 0.6502
Epoch 9/10
60000/60000 [========================] - 3s - loss: 1.0821 - acc: 0.6842
Epoch 10/10
60000/60000 [========================] - 3s - loss: 0.9799 - acc: 0.7157
loss: 0.859834249687
accuracy: 0.788
```
您可以看到,在 Keras 中構建和訓練模型是多么容易。
您可以從[他們記錄完備的網站](https://keras.io)獲取有關 Keras 的更多信息。
# 總結
在本章中,我們了解了 Keras。 Keras 是 TensorFlow 最受歡迎的高級庫。我個人更喜歡將 Keras 用于我為商業制作和學術研究開發的所有模型。我們學習了使用函數式和順序 API 在 Keras 中創建和訓練模型所遵循的工作流程。我們了解了各種 Keras 層以及如何將層添加到順序和函數式模型中。我們還學習了如何編譯,訓練和評估 Keras 模型。我們還看到了 Keras 提供的一些附加模塊。
在本書的其余章節中,我們將介紹核心 TensorFlow 和 Keras 中的大多數示例。 在下一章中,我們將學習如何使用 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
- 六、自編碼器,變分自編碼器和生成對抗網絡
- 七、遷移學習
- 八、機器學習最佳實踐和故障排除
- 九、大規模訓練
- 十、參考文獻