<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 二、TensorFlow 的高級庫 TensorFlow 有幾個高級庫和接口(API),允許我們使用 TFLearn,TFSlim,Sonnet,PrettyTensor,Keras 和最近發布的 TensorFlow Estimators 輕松構建和訓練模型。 我們將在本章中介紹以下高級庫,同時將下一章專門用于 Keras: * TFEstimator - 以前的 TF 學習 * TFSlim * TFLearn * PrettyTensor * Sonnet 我們將提供使用所有五個庫構建 MNIST 數據集模型的示例。當我們從第 4 章開始介紹模型的細節時,不要擔心理解模型的細節。 您可以使用代碼包中包含的 Jupyter 筆記本`ch-02_TF_High_Level_Libraries`來遵循本章中的代碼示例。 嘗試修改筆記本中的示例以進行實驗和游戲。 # TFEstimator - 以前的 TF 學習 TFEstimator 是一個高級 API,通過封裝訓練,評估,預測和導出函數,可以輕松創建和訓練模型。 TensorFlow 最近重新命名并在 TensorFlow 中以新名稱 TFEstimator 發布了 TFLearn 包,可能是為了避免與 tflearn.org 的 TFLearn 包混淆。 TFEstimator API 對原始 TF 學習包進行了重大改進,這些包在 KDD 17 會議上提供的研究論文中有所描述,[可以在此鏈接中找到](https://doi.org/10.1145/3097983.3098171)。 TFEstimator 接口設計靈感來自流行的機器學習庫 SciKit Learn,允許從不同類型的可用模型創建估計器對象,然后在任何類型的估計器上提供四個主要函數: * `estimator.fit()` * `estimator.evaluate()` * `estimator.predict()` * `estimator.export()` 函數的名稱是不言自明的。估計器對象表示模型,但模型本身是從提供給估計器的模型定義函數創建的。 我們可以在下圖中描述估計器對象及其接口: ![](https://img.kancloud.cn/25/42/25428da14109e1c2a16da56b7999675d_231x347.png) 使用 Estimator API 而不是在核心 TensorFlow 中構建所有內容,可以不用擔心圖,會話,初始化變量或其他低級細節。在撰寫本書時,TensorFlow 提供了以下預構建的估計器: * `tf.contrib.learn.KMeansClustering` * `tf.contrib.learn.DNNClassifier` * `tf.contrib.learn.DNNRegressor` * `tf.contrib.learn.DNNLinearCombinedRegressor` * `tf.contrib.learn.DNNLinearCombinedClassifier` * `tf.contrib.learn.LinearClassifier` * `tf.contrib.learn.LinearRegressor` * `tf.contrib.learn.LogisticRegressor` TFEstimator API 中的簡單工作流程如下: 1. 找到與您要解決的問題相關的預構建 Estimator。 2. 編寫導入數據集的函數。 3. 定義包含特征的數據中的列。 4. 創建在步驟 1 中選擇的預構建估計器的實例。 5. 訓練估計器。 6. 使用經過訓練的估計器進行評估或預測。 下一章討論的 Keras 庫提供了將 Keras 模型轉換為 Estimators 的便捷函數:`keras.estimator.model_to_estimator()`。 筆記本`ch-02_TF_High_Level_Libraries`中提供了 MNIST 分類示例的完整代碼。 TFEstimator MNIST 示例的輸出如下: ```py INFO:tensorflow:Using default config. WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmprvcqgu07 INFO:tensorflow:Using config: {'_save_checkpoints_steps': None, '_task_type': 'worker', '_save_checkpoints_secs': 600, '_service': None, '_task_id': 0, '_master': '', '_session_config': None, '_num_worker_replicas': 1, '_keep_checkpoint_max': 5, '_cluster_spec': <tensorflow.python.training.server_lib.ClusterSpec object at 0x7ff9d15f5fd0>, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_is_chief': True, '_save_summary_steps': 100, '_model_dir': '/tmp/tmprvcqgu07', '_num_ps_replicas': 0, '_tf_random_seed': None} INFO:tensorflow:Create CheckpointSaverHook. INFO:tensorflow:Saving checkpoints for 1 into /tmp/tmprvcqgu07/model.ckpt. INFO:tensorflow:loss = 2.4365, step = 1 INFO:tensorflow:global_step/sec: 597.996 INFO:tensorflow:loss = 1.47152, step = 101 (0.168 sec) INFO:tensorflow:global_step/sec: 553.29 INFO:tensorflow:loss = 0.728581, step = 201 (0.182 sec) INFO:tensorflow:global_step/sec: 519.498 INFO:tensorflow:loss = 0.89795, step = 301 (0.193 sec) INFO:tensorflow:global_step/sec: 503.414 INFO:tensorflow:loss = 0.743328, step = 401 (0.202 sec) INFO:tensorflow:global_step/sec: 539.251 INFO:tensorflow:loss = 0.413222, step = 501 (0.181 sec) INFO:tensorflow:global_step/sec: 572.327 INFO:tensorflow:loss = 0.416304, step = 601 (0.174 sec) INFO:tensorflow:global_step/sec: 543.99 INFO:tensorflow:loss = 0.459793, step = 701 (0.184 sec) INFO:tensorflow:global_step/sec: 687.748 INFO:tensorflow:loss = 0.501756, step = 801 (0.146 sec) INFO:tensorflow:global_step/sec: 654.217 INFO:tensorflow:loss = 0.666772, step = 901 (0.153 sec) INFO:tensorflow:Saving checkpoints for 1000 into /tmp/tmprvcqgu07/model.ckpt. INFO:tensorflow:Loss for final step: 0.426257. INFO:tensorflow:Starting evaluation at 2017-12-15-02:27:45 INFO:tensorflow:Restoring parameters from /tmp/tmprvcqgu07/model.ckpt-1000 INFO:tensorflow:Finished evaluation at 2017-12-15-02:27:45 INFO:tensorflow:Saving dict for global step 1000: accuracy = 0.8856, global_step = 1000, loss = 0.40996 {'accuracy': 0.88559997, 'global_step': 1000, 'loss': 0.40995964} ``` 您將在第 5 章中看到如何使用核心 TensorFlow 創建此類模型。 # TFSlim TFSlim 是一個基于 TensorFlow 核心構建的輕量級庫,用于定義和訓練模型。 TFSlim 可與其他 TensorFlow 低級和高級庫(如 TFLearn)結合使用。 TFSlim 是包裝中 TensorFlow 安裝的一部分:`tf.contrib.slim`。運行以下命令以檢查 TFSlim 安裝是否正常工作: ```py python3 -c 'import tensorflow.contrib.slim as slim; eval = slim.evaluation.evaluate_once' ``` TFSlim 提供了幾個模塊,可以獨立挑選和應用,并與其他 TensorFlow 包混合使用。例如,在撰寫本書時,TFSlim 有以下主要模塊: | TFSlim 模塊 | 模塊說明 | | --- | --- | | `arg_scope` | 提供將元素應用于作用域下定義的所有圖節點的機制。 | | `layer` | 提供幾種不同的層,如`fully_connected`,`conv2d`等等。 | | `loss` | 提供用于訓練優化器的損失函數 | | `learn` | 提供訓練模型的函數 | | `evaluate` | 提供評估函數 | | `metics` | 提供用于評估模型的度量函數 | | `regularizers` | 提供用于創建正則化方法的函數 | | `variable` | 提供變量創建的函數 | | `net` | 提供各種預制和預訓練模型,如 VGG16,InceptionV3,ResNet | TFSlim 的簡單工作流程如下: 1. 使用 Slim 層創建模型。 2. 提供層的輸入以實例化模型。 3. 使用對率和標簽來定義損失。 4. 使用便利函數`get_total_loss()`獲得全部損失。 5. 創建一個優化器。 6. 使用便利函數`slim.learning.create_train_op()`,`total_loss`和`optimizer`創建訓練函數。 7. 使用上一步中定義的便捷函數`slim.learning.train()`和訓練函數運行訓練。 筆記本`ch-02_TF_High_Level_Libraries`中提供了 MNIST 分類示例的完整代碼。 TFSlim MNIST 示例的輸出如下: ```py INFO:tensorflow:Starting Session. INFO:tensorflow:Saving checkpoint to path ./slim_logs/model.ckpt INFO:tensorflow:global_step/sec: 0 INFO:tensorflow:Starting Queues. INFO:tensorflow:global step 100: loss = 2.2669 (0.010 sec/step) INFO:tensorflow:global step 200: loss = 2.2025 (0.010 sec/step) INFO:tensorflow:global step 300: loss = 2.1257 (0.010 sec/step) INFO:tensorflow:global step 400: loss = 2.0419 (0.009 sec/step) INFO:tensorflow:global step 500: loss = 1.9532 (0.009 sec/step) INFO:tensorflow:global step 600: loss = 1.8733 (0.010 sec/step) INFO:tensorflow:global step 700: loss = 1.8002 (0.010 sec/step) INFO:tensorflow:global step 800: loss = 1.7273 (0.010 sec/step) INFO:tensorflow:global step 900: loss = 1.6688 (0.010 sec/step) INFO:tensorflow:global step 1000: loss = 1.6132 (0.010 sec/step) INFO:tensorflow:Stopping Training. INFO:tensorflow:Finished training! Saving model to disk. final loss=1.6131552457809448 ``` 從輸出中可以看出,便捷函數`slim.learning.train()`將訓練輸出保存在指定日志目錄中的檢查點文件中。如果重新開始訓練,它將首先檢查檢查點是否存在,并且默認情況下將從檢查點恢復訓練。 在撰寫本文時,[TFSlim 的文檔頁面在此鏈接中被發現為空](https://www.tensorflow.org/api_docs/python/tf/contrib/slim)。 但是,[可以在此鏈接的源代碼中找到一些文檔](https://github.com/tensorflow/tensorflow/tree/r1.4/tensorflow/contrib/slim)。 我們將使用 TFSlim 來學習如何在后面的章節中使用預訓練的模型,如 VGG16 和 InceptionV3。 # TFLearn TFLearn 是 Python 中的模塊化庫,它構建在核心 TensorFlow 之上。 TFLearn 與 TensorFlow Learn 包不同,后者也稱為 TFLearn(TF 和 Learn 之間有一個空格)。[TFLearn 可從此鏈接獲得](http://tflearn.org),[源代碼可在 GitHub 上的此鏈接獲得](https://github.com/tflearn/tflearn)。 可以使用以下命令在 Python 3 中安裝 TFLearn: ```py pip3 install tflearn ``` 要在其他環境或源中安裝 TFLearn,請參閱[此鏈接](http://tflearn.org/installation/)。 TFLearn 中的簡單工作流程如下: 1. 首先創建一個輸入層。 2. 傳遞輸入對象以創建更多層。 3. 添加輸出層。 4. 使用估計器層(例如`regression`)創建網絡。 5. 從上一步中創建的網絡創建模型。 6. 使用`model.fit()`方法訓練模型。 7. 使用訓練的模型進行預測或評估。 # 創建 TFLearn 層 讓我們學習如何在 TFLearn 中創建神經網絡模型的層: 1. 首先創建一個輸入層: ```py input_layer = tflearn.input_data(shape=[None,num_inputs] ``` 1. 傳遞輸入對象以創建更多層: ```py layer1 = tflearn.fully_connected(input_layer,10, activation='relu') layer2 = tflearn.fully_connected(layer1,10, activation='relu') ``` 1. 添加輸出層: ```py output = tflearn.fully_connected(layer2,n_classes, activation='softmax') ``` 1. 從估計器層創建最終網絡,例如`regression`: ```py net = tflearn.regression(output, optimizer='adam', metric=tflearn.metrics.Accuracy(), loss='categorical_crossentropy' ) ``` TFLearn 為以下子部分中描述的層提供了幾個類。 # TFLearn 核心層 TFLearn 在`tflearn.layers.core`模塊中提供以下層: | 層類 | 描述 | | --- | --- | | `input_data` | 該層用于指定神經網絡的輸入層。 | | `fully_connected` | 該層用于指定一個層,其中所有神經元都連接到前一層中的所有神經元。 | | `dropout` | 該層用于指定丟棄正則化。輸入元素由`1/keep_prob`縮放,同時保持預期的總和不變。 | | `custom_layer` | 此層用于指定要應用于輸入的自定義函數。此類包裝我們的自定義函數并將該函數顯示為層。 | | `reshape` | 此層將輸入重新整形為指定形狀的輸出。 | | `flatten` | 該層將輸入張量轉換為 2D 張量。 | | `activation` | 該層將指定的激活函數應用于輸入張量。 | | `single_unit` | 該層將線性函數應用于輸入。 | | `highway` | 該層實現了完全連接的公路函數。 | | `one_hot_encoding` | 此層將數字標簽轉換為二元向量單熱編碼表示。 | | `time_distributed` | 該層將指定的函數應用于輸入張量的每個時間步長。 | | `multi_target_data` | 此層創建并連接多個占位符,特別是在層使用來自多個源的目標時使用。 | # TFLearn 卷積層 TFLearn 在`tflearn.layers.conv`模塊中提供以下層: | 層類 | 描述 | | --- | --- | | `conv_1d` | 該層將 1D 卷積應用于輸入數據 | | `conv_2d` | 該層將 2D 卷積應用于輸入數據 | | `conv_3d` | 該層將 3D 卷積應用于輸入數據 | | `conv_2d_transpose` | 該層將`conv2_d`的轉置應用于輸入數據 | | `conv_3d_transpose` | 該層將`conv3_d`的轉置應用于輸入數據 | | `atrous_conv_2d` | 該層計算二維動態卷積 | | `grouped_conv_2d` | 該層計算深度 2D 卷積 | | `max_pool_1d` | 該層計算 1D 最大池化 | | `max_pool_2d` | 該層計算 2D 最大池化 | | `avg_pool_1d` | 該層計算 1D 平均池化 | | `avg_pool_2d` | 該層計算 2D 平均池化 | | `upsample_2d` | 該層應用行和列 2D 重復操作 | | `upscore_layer` | 該層實現了[這個頁面](http://arxiv.org/abs/1411.4038)中規定的最高分。 | | `global_max_pool` | 該層實現全局最大池化操作 | | `global_avg_pool` | 該層實現全局平均池化操作 | | `residual_block` | 該層實現殘差塊以創建深度殘差網絡 | | `residual_bottleneck` | 該層實現深度殘差網絡的殘差瓶頸塊 | | `resnext_block` | 該層實現 ResNext 塊 | # TFLearn 循環層 TFLearn 在`tflearn.layers.recurrent`模塊中提供以下層: | 層類 | 描述 | | --- | --- | | `simple_rnn` | 該層實現了簡單的循環神經網絡模型 | | `bidirectional_rnn` | 該層實現雙向 RNN 模型 | | `lstm` | 該層實現了 LSTM 模型 | | `gru` | 該層實現 GRU 模型 | # TFLearn 正則化層 TFLearn 在`tflearn.layers.normalization`模塊中提供以下層: | 層類 | 描述 | | --- | --- | | `batch_normalization` | 該層正則化每個批次的先前層激活的輸出 | | `local_response_normalization` | 該層實現 LR 正則化 | | `l2_normalization` | 該層將 L2 歸一化應用于輸入張量 | # TFLearn 嵌入層 TFLearn 在`tflearn.layers.embedding_ops`模塊中只提供一層: | 層類 | 描述 | | --- | --- | | `embedding` | 該層實現整數 ID 或浮點序列的嵌入函數 | # TFLearn 合并層 TFLearn 在`tflearn.layers.merge_ops`模塊中提供以下層: | 層類 | 描述 | | --- | --- | | `merge_outputs` | 該層將張量列表合并為單個張量,通常用于合并相同形狀的輸出張量 | | `merge` | 該層將張量列表合并為單個張量;您可以指定需要進行合并的軸 | # TFLearn 估計層 TFLearn 在`tflearn.layers.estimator`模塊中只提供一層: | 層類 | 描述 | | --- | --- | | `regression` | 該層實現線性或邏輯回歸 | 在創建回歸層時,您可以指定優化器以及損失和度量函數。 TFLearn 在`tflearn.optimizers`模塊中提供以下優化器函數作為類: * `SGD` * `RMSprop` * `Adam` * `Momentum` * ``AdaGrad`` * `Ftrl` * `AdaDelta` * `ProximalAdaGrad` * `Nesterov` 您可以通過擴展`tflearn.optimizers.Optimizer`基類來創建自定義優化器。 TFLearn 在`tflearn.metrics`模塊中提供以下度量函數作為類或操作: * `Accuracy`或`accuracy_op` * `Top_k`或`top_k_op` * `R2`或`r2_op` * `WeightedR2`或`weighted_r2_op` * `binary_accuracy_op` 您可以通過擴展`tflearn.metrics.Metric`基類來創建自定義指標。 TFLearn 在`tflearn.objectives`模塊中提供以下損失函數,稱為目標: * `softymax_categorical_crossentropy` * `categorical_crossentropy` * `binary_crossentropy` * `weighted_crossentropy` * `mean_square` * `hinge_loss` * `roc_auc_score` * `weak_cross_entropy_2d` 在指定輸入,隱藏和輸出層時,您可以指定要應用于輸出的激活函數。 TFLearn 在`tflearn.activations`模塊中提供以下激活函數: * `linear` * `tanh` * `sigmoid` * `softmax` * `softplus` * `softsign` * `relu` * `relu6` * `leaky_relu` * `prelu` * `elu` * `crelu` * `selu` # 創建 TFLearn 模型 從上一步創建的網絡創建模型(創建 TFLearn 層部分的步驟 4): ```py model = tflearn.DNN(net) ``` # TFLearn 模型的類型 TFLearn 提供兩種不同的模型: * `DNN`(深度神經網絡)模型:此類允許您從通過層創建的網絡創建多層感知機 * `SequenceGenerator`模型:該類允許您創建可以生成序列的深度神經網絡 # 訓練 TFLearn 模型 創建后,使用`model.fit()`方法訓練模型: ```py model.fit(X_train, Y_train, n_epoch=n_epochs, batch_size=batch_size, show_metric=True, run_id='dense_model') ``` # 使用 TFLearn 模型 使用訓練的模型預測或評估: ```py score = model.evaluate(X_test, Y_test) print('Test accuracy:', score[0]) ``` 筆記本`ch-02_TF_High_Level_Libraries`中提供了 TFLearn MNIST 分類示例的完整代碼。 TFLearn MNIST 示例的輸出如下: ```py Training Step: 5499 | total loss: 0.42119 | time: 1.817s | Adam | epoch: 010 | loss: 0.42119 - acc: 0.8860 -- iter: 54900/55000 Training Step: 5500 | total loss: 0.40881 | time: 1.820s | Adam | epoch: 010 | loss: 0.40881 - acc: 0.8854 -- iter: 55000/55000 -- Test accuracy: 0.9029 ``` [您可以從此鏈接獲得有關 TFLearn 的更多信息](http://tflearn.org/)。 # PrettyTensor PrettyTensor 在 TensorFlow 上提供了一個薄包裝器。 PrettyTensor 提供的對象支持可鏈接的語法來定義神經網絡。例如,可以通過鏈接層來創建模型,如以下代碼所示: ```py model = (X. flatten(). fully_connected(10). softmax_classifier(n_classes, labels=Y)) ``` 可以使用以下命令在 Python 3 中安裝 PrettyTensor: ```py pip3 install prettytensor ``` PrettyTensor 以名為`apply()`的方法提供了一個非常輕量級和可擴展的接口。可以使用`.apply(function, arguments)`方法將任何附加函數鏈接到 PrettyTensor 對象。 PrettyTensor 將調用`function`并提供當前張量作為`function`的第一個參數。 用戶創建的函數可以使用`@prettytensor.register`裝飾器來裝飾。[詳細信息在這里](https://github.com/google/prettytensor)。 在 PrettyTensor 中定義和訓練模型的工作流程如下: 1. 獲取數據。 2. 定義超參數和參數。 3. 定義輸入和輸出。 4. 定義模型。 5. 定義評估器,優化器和訓練器函數。 6. 創建運行器對象。 7. 在 TensorFlow 會話中,使用`runner.train_model()`方法訓練模型。 8. 在同一會話中,使用`runner.evaluate_model()`方法評估模型。 筆記本`ch-02_TF_High_Level_Libraries`中提供了 PrettyTensor MNIST 分類示例的完整代碼。 PrettyTensor MNIST 示例的輸出如下: ```py [1] [2.5561881] [600] [0.3553167] Accuracy after 1 epochs 0.8799999952316284 [601] [0.47775066] [1200] [0.34739292] Accuracy after 2 epochs 0.8999999761581421 [1201] [0.19110668] [1800] [0.17418651] Accuracy after 3 epochs 0.8999999761581421 [1801] [0.27229539] [2400] [0.34908807] Accuracy after 4 epochs 0.8700000047683716 [2401] [0.40000191] [3000] [0.30816519] Accuracy after 5 epochs 0.8999999761581421 [3001] [0.29905257] [3600] [0.41590339] Accuracy after 6 epochs 0.8899999856948853 [3601] [0.32594997] [4200] [0.36930788] Accuracy after 7 epochs 0.8899999856948853 [4201] [0.26780865] [4800] [0.2911002] Accuracy after 8 epochs 0.8899999856948853 [4801] [0.36304188] [5400] [0.39880857] Accuracy after 9 epochs 0.8999999761581421 [5401] [0.1339224] [6000] [0.14993289] Accuracy after 10 epochs 0.8899999856948853 ``` # Sonnet Sonnet 是一個用 Python 編寫的面向對象的庫。它是由 DeepMind 在 2017 年發布的。Sonnet 打算從對象中清晰地分離構建計算圖的以下兩個方面: * 稱為模塊的對象的配置 * 對象與計算圖的連接 可以使用以下命令在 Python3 中安裝 Sonnet: ```py pip3 install dm-sonnet ``` [可以按照此鏈接的說明從源安裝 Sonnet](https://github.com/deepmind/sonnet/blob/master/docs/INSTALL.md)。 模塊被定義為抽象類`sonnet.AbstractModule`的子類。在編寫本書時,Sonnet 中提供了以下模塊: | 基本模塊 | `AddBias`,`BatchApply`,`BatchFlatten`,`BatchReshape`,`FlattenTrailingDimensions`,`Linear`,`MergeDims`,`SelectInput`,`SliceByDim`,`TileByDim`和`TrainableVariable` | | --- | --- | | 循環模塊 | `DeepRNN`,`ModelRNN`,`VanillaRNN`,`BatchNormLSTM`,`GRU`和`LSTM` | | Recurrent + ConvNet 模塊 | `Conv1DLSTM`和`Conv2DLSTM` | | ConvNet 模塊 | `Conv1D`,`Conv2D`,`Conv3D`,`Conv1DTranspose`,`Conv2DTranspose`,`Conv3DTranspose`,`DepthWiseConv2D`,`InPlaneConv2D`和`SeparableConv2D` | | ResidualNets | `Residual`,`ResidualCore`和`SkipConnectionCore` | | 其他 | `BatchNorm`,`LayerNorm`,`clip_gradient`和`scale_gradient` | 我們可以通過創建`sonnet.AbstractModule`的子類來定義我們自己的新模塊。從函數創建模塊的另一種非推薦方法是通過傳遞要包裝為模塊的函數來創建`sonnet.Module`類的對象。 在 Sonnet 庫中構建模型的工作流程如下: 1. 為從`sonnet.AbstractModule`繼承的數據集和網絡架構創建類。在我們的示例中,我們創建了一個 MNIST 類和一個 MLP 類。 2. 定義參數和超參數。 3. 從上一步中定義的數據集類定義測試和訓練數據集。 4. 使用定義的網絡類定義模型。例如,在我們的案例中,`model = MLP([20, n_classes])`創建了一個 MLP 網絡,其中包含兩層 20 和每個神經元`n_classes`的數量。 5. 使用模型為訓練和測試集定義`y_hat`占位符。 1. 定義訓練和測試集的損失占位符。 2. 使用訓練損失占位符定義優化器。 3. 在 TensorFlow 會話中執行所需數量的周期的損失函數以優化參數。 筆記本電腦`ch-02_TF_High_Level_Libraries`中提供了 Sonnet MNIST 分類示例的完整代碼。 每個類中的`__init__`方法初始化類和相關的超類。`_build`方法在調用類時創建并返回數據集或模型對象。 Sonnet MNIST 示例的輸出如下: ```py Epoch : 0 Training Loss : 236.79913330078125 Epoch : 1 Training Loss : 227.3693084716797 Epoch : 2 Training Loss : 221.96337890625 Epoch : 3 Training Loss : 220.99142456054688 Epoch : 4 Training Loss : 215.5921173095703 Epoch : 5 Training Loss : 213.88958740234375 Epoch : 6 Training Loss : 203.7091064453125 Epoch : 7 Training Loss : 204.57427978515625 Epoch : 8 Training Loss : 196.17218017578125 Epoch : 9 Training Loss : 192.3954315185547 Test loss : 192.8847198486328 ``` 由于神經網絡中計算的隨機性,您的輸出可能會有所不同。這包括我們對 Sonnet 模塊的概述。 [有關 Sonnet 的更多詳細信息,您可以瀏覽此鏈接](https://deepmind.github.io/sonnet/)。 # 總結 在本章中,我們瀏覽了一些構建在 TensorFlow 之上的高級庫。我們了解了 TFEstimator,TFSlim,TFLearn,PrettyTensor 和 Sonnet。我們為所有五個實現了 MNIST 分類示例。如果您無法理解模型的細節,請不要擔心,因為為 MNIST 示例構建的模型將在以下章節中再次介紹。 我們總結了下表中提供的庫和框架,如下表所示: | 高級庫 | 文檔鏈接 | 源代碼鏈接 | PIP3 安裝包 | | --- | --- | --- | --- | | TFEstimator | <https://www.tensorflow.org/get_started/estimator> | <https://github.com/tensorflow/tensorflow/tree/master/tensorflow/python/estimator> | TensorFlow 預置 | | TFSlim | <https://github.com/tensorflow/tensorflow/tree/r1.4/tensorflow/contrib/slim> | <https://github.com/tensorflow/tensorflow/tree/r1.4/tensorflow/contrib/slim/python/slim> | TensorFlow 預置 | | TFLearn | <http://tflearn.org/> | <https://github.com/tflearn/tflearn> | `tflearn` | | PrettyTensor | <https://github.com/google/prettytensor/tree/master/docs> | <https://github.com/google/prettytensor> | `prettytensor` | | Sonnet | <https://deepmind.github.io/sonnet/> | <https://github.com/deepmind/sonnet> | `dm-sonnet` | 在下一章中,我們將了解 Keras,這是用于創建和訓練 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>

                              哎呀哎呀视频在线观看