最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

TensorFlow 2建立神經(jīng)網(wǎng)絡(luò)分類模型—以iris數(shù)據(jù)為例

2021-05-31 21:41 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=15791?

?

本文將利用機器學(xué)習(xí)的手段來對鳶尾花按照物種進行分類。本教程將利用 TensorFlow 來進行以下操作:

  1. 構(gòu)建一個模型,

  2. 用樣例數(shù)據(jù)集對模型進行訓(xùn)練,以及

  3. 利用該模型對未知數(shù)據(jù)進行預(yù)測。

TensorFlow 編程

本指南采用了以下高級 TensorFlow 概念:

  • 使用 TensorFlow 默認的?eager execution?開發(fā)環(huán)境,

  • 使用?Datasets API?導(dǎo)入數(shù)據(jù),

  • 使用 TensorFlow 的?Keras API?來構(gòu)建各層以及整個模型。

本教程的結(jié)構(gòu)同很多 TensorFlow 程序相似:

  1. 數(shù)據(jù)集的導(dǎo)入

  2. 選擇模型類型

  3. 對模型進行訓(xùn)練

  4. 評估模型效果

  5. 使用訓(xùn)練過的模型進行預(yù)測

環(huán)境的搭建

配置導(dǎo)入

導(dǎo)入 TensorFlow 以及其他需要的 Python 庫。 默認情況下,TensorFlow 用?eager execution?來實時評估操作。?

  1. from __future__ import absolute_import, division, print_function, unicode_literals


  2. import os

  3. import matplotlib.pyplot as plt

?

import tensorflow as tf

?

  1. print("TensorFlow version: {}".format(tf.__version__))

  2. print("Eager execution: {}".format(tf.executing_eagerly()))

?

  1. TensorFlow version: 2.0.0

  2. Eager execution: True

?

鳶尾花分類問題

想象一下,您是一名植物學(xué)家,正在尋找一種能夠?qū)λl(fā)現(xiàn)的每株鳶尾花進行自動歸類的方法。機器學(xué)習(xí)可提供多種從統(tǒng)計學(xué)上分類花卉的算法。例如,一個復(fù)雜的機器學(xué)習(xí)程序可以根據(jù)照片對花卉進行分類。我們將根據(jù)鳶尾花花萼和花瓣的長度和寬度對其進行分類。

鳶尾屬約有 300 個品種,但我們的程序?qū)H對下列三個品種進行分類:

  • 山鳶尾

  • 維吉尼亞鳶尾

  • 變色鳶尾

導(dǎo)入和解析訓(xùn)練數(shù)據(jù)集

下載數(shù)據(jù)集文件并將其轉(zhuǎn)換為可供此 Python 程序使用的結(jié)構(gòu)。

下載數(shù)據(jù)集

使用?tf.keras.utils.get_file?函數(shù)下載訓(xùn)練數(shù)據(jù)集文件。該函數(shù)會返回下載文件的文件路徑:

?

  1. - 0s 0us/step

  2. Local copy of the dataset file: /home/kbuilder/.keras/datasets/iris_training.csv

?

檢查數(shù)據(jù)

數(shù)據(jù)集?iris_training.csv?是一個純文本文件,其中存儲了逗號分隔值 (CSV) 格式的表格式數(shù)據(jù).請使用?head -n5?命令查看前 5 個條目:

!head -n5 {train_dataset_fp}

?

  1. 120,4,setosa,versicolor,virginica

  2. 6.4,2.8,5.6,2.2,2

  3. 5.0,2.3,3.3,1.0,1

  4. 4.9,2.5,4.5,1.7,2

  5. 4.9,3.1,1.5,0.1,0

?

我們可以從該數(shù)據(jù)集視圖中注意到以下信息:

  1. 第一行是表頭,其中包含數(shù)據(jù)集信息:

  • 共有 120 個樣本。每個樣本都有四個特征和一個標(biāo)簽名稱,標(biāo)簽名稱有三種可能。

  • 后面的行是數(shù)據(jù)記錄,每個樣本各占一行,其中:

    • 前四個字段是特征: 這四個字段代表的是樣本的特點。在此數(shù)據(jù)集中,這些字段存儲的是代表花卉測量值的浮點數(shù)。

    • 最后一列是標(biāo)簽:即我們想要預(yù)測的值。對于此數(shù)據(jù)集,該值為 0、1 或 2 中的某個整數(shù)值(每個值分別對應(yīng)一個花卉名稱)。

我們用代碼表示出來:

  1. # CSV文件中列的順序



  2. print("Features: {}".format(feature_names))

  3. print("Label: {}".format(label_name))

?

  1. Features: ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']

  2. Label: species

?

每個標(biāo)簽都分別與一個字符串名稱(例如 “setosa” )相關(guān)聯(lián),但機器學(xué)習(xí)通常依賴于數(shù)字值。標(biāo)簽編號會映射到一個指定的表示法,例如:

  • 0?: 山鳶尾

  • 1?: 變色鳶尾

  • 2?: 維吉尼亞鳶尾

?

?

創(chuàng)建一個?tf.data.Dataset

TensorFlow的?Dataset API?可處理在向模型加載數(shù)據(jù)時遇到的許多常見情況。這是一種高階 API ,用于讀取數(shù)據(jù)并將其轉(zhuǎn)換為可供訓(xùn)練使用的格式。

由于數(shù)據(jù)集是 CSV 格式的文本文件,請使用?make_csv_dataset?函數(shù)將數(shù)據(jù)解析為合適的格式。由于此函數(shù)為訓(xùn)練模型生成數(shù)據(jù),默認行為是對數(shù)據(jù)進行隨機處理 (shuffle=True, shuffle_buffer_size=10000),并且無限期重復(fù)數(shù)據(jù)集(num_epochs=None)。 我們還設(shè)置了?batch_size?參數(shù):

?

  1. WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_core/python/data/experimental/ops/readers.py:521: parallel_interleave (from tensorflow.python.data.experimental.ops.interleave_ops) is deprecated and will be removed in a future version.

  2. Instructions for updating:

  3. Use `tf.data.Dataset.interleave(map_func, cycle_length, block_length, num_parallel_calls=tf.data.experimental.AUTOTUNE)` instead. If sloppy execution is desired, use `tf.data.Options.experimental_determinstic`.

?

make_csv_dataset?返回一個(features, label)?對構(gòu)建的?tf.data.Dataset?,其中?features?是一個字典:?{'feature_name': value}

這些?Dataset?對象是可迭代的。 我們來看看下面的一些特征:

?

  1. OrderedDict([('sepal_length', <tf.Tensor: id=68, shape=(32,), dtype=float32, numpy=

  2. array([6.7, 6.1, 6.6, 6.7, 5.4, 5.5, 5.1, 5.8, 5.2, 6.4, 7.3, 4.9, 6.1,

  3. 4.6, 4.6, 5.5, 6.7, 6. , 5.7, 6. , 7.7, 5. , 5.8, 5. , 4.5, 5.1,

  4. 5.3, 5.6, 5.2, 6.4, 6.6, 4.6], dtype=float32)>), ('sepal_width', <tf.Tensor: id=69, shape=(32,), dtype=float32, numpy=

  5. array([3. , 2.6, 3. , 3. , 3.4, 2.6, 3.7, 2.7, 2.7, 3.2, 2.9, 2.4, 2.8,

  6. 3.4, 3.6, 2.4, 3.1, 2.9, 2.8, 2.2, 3.8, 3.3, 2.7, 3.2, 2.3, 2.5,

  7. 3.7, 2.5, 3.4, 2.8, 2.9, 3.2], dtype=float32)>), ('petal_length', <tf.Tensor: id=66, shape=(32,), dtype=float32, numpy=

  8. array([5.2, 5.6, 4.4, 5. , 1.5, 4.4, 1.5, 4.1, 3.9, 5.3, 6.3, 3.3, 4. ,

  9. 1.4, 1. , 3.7, 5.6, 4.5, 4.5, 5. , 6.7, 1.4, 5.1, 1.2, 1.3, 3. ,

  10. 1.5, 3.9, 1.4, 5.6, 4.6, 1.4], dtype=float32)>), ('petal_width', <tf.Tensor: id=67, shape=(32,), dtype=float32, numpy=

  11. array([2.3, 1.4, 1.4, 1.7, 0.4, 1.2, 0.4, 1. , 1.4, 2.3, 1.8, 1. , 1.3,

  12. 0.3, 0.2, 1. , 2.4, 1.5, 1.3, 1.5, 2.2, 0.2, 1.9, 0.2, 0.3, 1.1,

  13. 0.2, 1.1, 0.2, 2.2, 1.3, 0.2], dtype=float32)>)])

?

注意到具有相似特征的樣本會歸為一組,即分為一批。更改?batch_size?可以設(shè)置存儲在這些特征數(shù)組中的樣本數(shù)。

繪制該批次中的幾個特征后,就會開始看到一些集群現(xiàn)象:

  1. plt.scatter(features['petal_length'],

  2. ? ? ? ? ? ? features['sepal_length'],

  3. ? ? ? ? ? ? c=labels,

  4. ? ? ? ? ? ? cmap='viridis')


  5. plt.xlabel("Petal length")

  6. plt.ylabel("Sepal length")

  7. plt.show()

?

png

要簡化模型構(gòu)建步驟,請創(chuàng)建一個函數(shù)以將特征字典重新打包為形狀為?(batch_size, num_features)?的單個數(shù)組。

此函數(shù)使用?tf.stack?方法,該方法從張量列表中獲取值,并創(chuàng)建指定維度的組合張量:

  1. def pack_features_vector(features, labels):

  2. ? """將特征打包到一個數(shù)組中"""

  3. ? features = tf.stack(list(features.values()), axis=1)

  4. ? return features, labels

?

然后使用?tf.data.Dataset.map?方法將每個?(features,label)?對中的?features?打包到訓(xùn)練數(shù)據(jù)集中:

train_dataset = train_dataset.map(pack_features_vector)

?

Dataset?的特征元素被構(gòu)成了形如?(batch_size, num_features)?的數(shù)組。

?

選擇模型類型

為何要使用模型?

模型是指特征與標(biāo)簽之間的關(guān)系。對于鳶尾花分類問題,模型定義了花萼和花瓣測量值與預(yù)測的鳶尾花品種之間的關(guān)系。一些簡單的模型可以用幾行代數(shù)進行描述,但復(fù)雜的機器學(xué)習(xí)模型擁有大量難以匯總的參數(shù)。

您能否在不使用機器學(xué)習(xí)的情況下確定四個特征與鳶尾花品種之間的關(guān)系?也就是說,您能否使用傳統(tǒng)編程技巧(例如大量條件語句)創(chuàng)建模型?也許能,前提是反復(fù)分析該數(shù)據(jù)集,并最終確定花瓣和花萼測量值與特定品種的關(guān)系。對于更復(fù)雜的數(shù)據(jù)集來說,這會變得非常困難,或許根本就做不到。一個好的機器學(xué)習(xí)方法可為您確定模型。如果您將足夠多的代表性樣本饋送到正確類型的機器學(xué)習(xí)模型中,該程序便會為您找出相應(yīng)的關(guān)系。

選擇模型

我們需要選擇要進行訓(xùn)練的模型類型。模型具有許多類型,挑選合適的類型需要一定的經(jīng)驗。本教程使用神經(jīng)網(wǎng)絡(luò)來解決鳶尾花分類問題。神經(jīng)網(wǎng)絡(luò)可以發(fā)現(xiàn)特征與標(biāo)簽之間的復(fù)雜關(guān)系。神經(jīng)網(wǎng)絡(luò)是一個高度結(jié)構(gòu)化的圖,其中包含一個或多個隱含層。每個隱含層都包含一個或多個神經(jīng)元。 神經(jīng)網(wǎng)絡(luò)有多種類別,該程序使用的是密集型神經(jīng)網(wǎng)絡(luò),也稱為全連接神經(jīng)網(wǎng)絡(luò)?: 一個層中的神經(jīng)元將從上一層中的每個神經(jīng)元獲取輸入連接。例如,圖 2 顯示了一個密集型神經(jīng)網(wǎng)絡(luò),其中包含 1 個輸入層、2 個隱藏層以及 1 個輸出層:

當(dāng)圖 2 中的模型經(jīng)過訓(xùn)練并獲得無標(biāo)簽樣本后,它會產(chǎn)生 3 個預(yù)測結(jié)果:相應(yīng)鳶尾花屬于指定品種的可能性。這種預(yù)測稱為推理。對于該示例,輸出預(yù)測結(jié)果的總和是 1.0。在圖 2 中,該預(yù)測結(jié)果分解如下:山鳶尾為 0.02,變色鳶尾為 0.95,維吉尼亞鳶尾為 0.03。這意味著該模型預(yù)測某個無標(biāo)簽鳶尾花樣本是變色鳶尾的概率為 95%。

使用 Keras 創(chuàng)建模型

TensorFlow?tf.keras?API 是創(chuàng)建模型和層的首選方式。通過該 API,您可以輕松地構(gòu)建模型并進行實驗,而將所有部分連接在一起的復(fù)雜工作則由 Keras 處理。

tf.keras.Sequential?模型是層的線性堆疊。該模型的構(gòu)造函數(shù)會采用一系列層實例;在本示例中,采用的是 2 個密集層(各自包含10個節(jié)點),以及 1 個輸出層(包含 3 個代表標(biāo)簽預(yù)測的節(jié)點。第一個層的?input_shape?參數(shù)對應(yīng)該數(shù)據(jù)集中的特征數(shù)量,它是一項必需參數(shù):

  1. model = tf.keras.Sequential([

  2. ? tf.keras.layers.Dense(10, activation=tf.nn.relu, input_shape=(4,)), ?# 需要給出輸入的形式

  3. ? tf.keras.layers.Dense(10, activation=tf.nn.relu),

  4. ? tf.keras.layers.Dense(3)

  5. ])

?

激活函數(shù)可決定層中每個節(jié)點的輸出形式。 這些非線性關(guān)系很重要,如果沒有它們,模型將等同于單個層。激活函數(shù)有很多種,但隱藏層通常使用?ReLU。

隱藏層和神經(jīng)元的理想數(shù)量取決于問題和數(shù)據(jù)集。與機器學(xué)習(xí)的多個方面一樣,選擇最佳的神經(jīng)網(wǎng)絡(luò)形狀需要一定的知識水平和實驗基礎(chǔ)。一般來說,增加隱藏層和神經(jīng)元的數(shù)量通常會產(chǎn)生更強大的模型,而這需要更多數(shù)據(jù)才能有效地進行訓(xùn)練。

使用模型

我們快速了解一下此模型如何處理一批特征:

?

  1. <tf.Tensor: id=231, shape=(5, 3), dtype=float32, numpy=

  2. array([[-0.40338838, ?0.01194552, -1.964499 ?],

  3. [-0.5877474 , ?0.02103703, -2.9969394 ],

  4. [-0.40222907, ?0.35343137, -0.7817157 ],

  5. [-0.4376807 , ?0.40464264, -0.8379218 ],

  6. [-0.39644662, ?0.31841943, -0.8436158 ]], dtype=float32)>

?

在此示例中,每個樣本針對每個類別返回一個?logit。

要將這些對數(shù)轉(zhuǎn)換為每個類別的概率:

?

  1. <tf.Tensor: id=236, shape=(5, 3), dtype=float32, numpy=

  2. array([[0.36700222, 0.55596304, 0.07703481],

  3. [0.3415203 , 0.62778115, 0.03069854],

  4. [0.2622449 , 0.55832386, 0.17943124],

  5. [0.25050646, 0.58161455, 0.167879 ?],

  6. [0.27149206, 0.5549062 , 0.17360175]], dtype=float32)>

?

對每個類別執(zhí)行?tf.argmax?運算可得出預(yù)測的類別索引。不過,該模型尚未接受訓(xùn)練,因此這些預(yù)測并不理想。

  1. print("Prediction: {}".format(tf.argmax(predictions, axis=1)))

  2. print(" ? ?Labels: {}".format(labels))

?

  1. Prediction: [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]

  2. Labels: [1 2 0 0 0 2 0 1 0 2 0 0 2 2 2 2 1 2 2 1 2 0 2 1 0 2 2 1 1 1 2 2]

?

訓(xùn)練模型

訓(xùn)練?是一個機器學(xué)習(xí)階段,在此階段中,模型會逐漸得到優(yōu)化,也就是說,模型會了解數(shù)據(jù)集。目標(biāo)是充分了解訓(xùn)練數(shù)據(jù)集的結(jié)構(gòu),以便對測試數(shù)據(jù)進行預(yù)測。如果您從訓(xùn)練數(shù)據(jù)集中獲得了過多的信息,預(yù)測便會僅適用于模型見過的數(shù)據(jù),但是無法泛化。此問題被稱之為過擬合—就好比將答案死記硬背下來,而不去理解問題的解決方式。

鳶尾花分類問題是監(jiān)督式機器學(xué)習(xí)的一個示例: 模型通過包含標(biāo)簽的樣本加以訓(xùn)練。 而在非監(jiān)督式機器學(xué)習(xí)中,樣本不包含標(biāo)簽。相反,模型通常會在特征中發(fā)現(xiàn)一些規(guī)律。

定義損失和梯度函數(shù)

在訓(xùn)練和評估階段,我們都需要計算模型的損失。 這樣可以衡量模型的預(yù)測結(jié)果與預(yù)期標(biāo)簽有多大偏差,也就是說,模型的效果有多差。我們希望盡可能減小或優(yōu)化這個值。

我們的模型會使用?tf.keras.losses.SparseCategoricalCrossentropy?函數(shù)計算其損失,此函數(shù)會接受模型的類別概率預(yù)測結(jié)果和預(yù)期標(biāo)簽,然后返回樣本的平均損失。

?

Loss test: 2.1644210815429688

?

使用?tf.GradientTape?的前后關(guān)系來計算梯度以優(yōu)化你的模型。

?

創(chuàng)建優(yōu)化器

優(yōu)化器?會將計算出的梯度應(yīng)用于模型的變量,以使?loss?函數(shù)最小化。您可以將損失函數(shù)想象為一個曲面,我們希望通過到處走動找到該曲面的最低點。梯度指向最高速上升的方向,因此我們將沿相反的方向向下移動。我們以迭代方式計算每個批次的損失和梯度,以在訓(xùn)練過程中調(diào)整模型。模型會逐漸找到權(quán)重和偏差的最佳組合,從而將損失降至最低。損失越低,模型的預(yù)測效果就越好。

TensorFlow有許多可用于訓(xùn)練的優(yōu)化算法。learning_rate?被用于設(shè)置每次迭代(向下行走)的步長。 這是一個?超參數(shù)?,您通常需要調(diào)整此參數(shù)以獲得更好的結(jié)果。

我們來設(shè)置優(yōu)化器:

optimizer = tf.keras.optimizers.Adam(learning_rate=0.01)

?

我們將使用它來計算單個優(yōu)化步驟:

?

  1. Step: 0, Initial Loss: 2.1644210815429688

  2. Step: 1, ? ? ? ? Loss: 1.8952136039733887

?

訓(xùn)練循環(huán)

一切準(zhǔn)備就緒后,就可以開始訓(xùn)練模型了!訓(xùn)練循環(huán)會將數(shù)據(jù)集樣本饋送到模型中,以幫助模型做出更好的預(yù)測。以下代碼塊可設(shè)置這些訓(xùn)練步驟:

  1. 迭代每個周期。通過一次數(shù)據(jù)集即為一個周期。

  2. 在一個周期中,遍歷訓(xùn)練?Dataset?中的每個樣本,并獲取樣本的特征(x)和標(biāo)簽(y)。

  3. 根據(jù)樣本的特征進行預(yù)測,并比較預(yù)測結(jié)果和標(biāo)簽。衡量預(yù)測結(jié)果的不準(zhǔn)確性,并使用所得的值計算模型的損失和梯度。

  4. 使用?optimizer?更新模型的變量。

  5. 跟蹤一些統(tǒng)計信息以進行可視化。

  6. 對每個周期重復(fù)執(zhí)行以上步驟。

num_epochs?變量是遍歷數(shù)據(jù)集集合的次數(shù)。與直覺恰恰相反的是,訓(xùn)練模型的時間越長,并不能保證模型就越好。num_epochs?是一個可以調(diào)整的超參數(shù)。選擇正確的次數(shù)通常需要一定的經(jīng)驗和實驗基礎(chǔ)。

  1. ## Note: 使用相同的模型變量重新運行此單元


  2. # 保留結(jié)果用于繪制

  3. train_loss_results = []

  4. train_accuracy_results = []


  5. num_epochs = 201


  6. ? for x, y in train_dataset:

  7. ? ? # 優(yōu)化模型

  8. ? ? loss_value, grads = grad(model, x, y)

  9. ? ? optimizer.apply_gradients(zip(grads, model.trainable_variables))


  10. ? ? # 追蹤進度

  11. ? ? epoch_loss_avg(loss_value) ?# 添加當(dāng)前的 batch loss

  12. ? ? # 比較預(yù)測標(biāo)簽與真實標(biāo)簽

  13. ? ? epoch_accuracy(y, model(x))


  14. ? # 循環(huán)結(jié)束

  15. ? train_loss_results.append(epoch_loss_avg.result())

  16. ? train_accuracy_results.append(epoch_accuracy.result())



?

  1. Epoch 000: Loss: 1.435, Accuracy: 30.000%

  2. Epoch 050: Loss: 0.091, Accuracy: 97.500%

  3. Epoch 100: Loss: 0.062, Accuracy: 97.500%

  4. Epoch 150: Loss: 0.052, Accuracy: 98.333%

  5. Epoch 200: Loss: 0.055, Accuracy: 99.167%

?

可視化損失函數(shù)隨時間推移而變化的情況

雖然輸出模型的訓(xùn)練過程有幫助,但查看這一過程往往更有幫助。

看到損失下降且準(zhǔn)確率上升。


  1. plt.show()

?

png

評估模型的效果

模型已經(jīng)過訓(xùn)練,現(xiàn)在我們可以獲取一些關(guān)于其效果的統(tǒng)計信息了。

評估?指的是確定模型做出預(yù)測的效果。要確定模型在鳶尾花分類方面的效果,請將一些花萼和花瓣測量值傳遞給模型,并要求模型預(yù)測它們所代表的鳶尾花品種。然后,將模型的預(yù)測結(jié)果與實際標(biāo)簽進行比較。例如,如果模型對一半輸入樣本的品種預(yù)測正確,則?準(zhǔn)確率?為?0.5?。 圖 顯示的是一個效果更好一些的模型,該模型做出 5 次預(yù)測,其中有 4 次正確,準(zhǔn)確率為 80%:

樣本特征標(biāo)簽?zāi)P皖A(yù)測5.93.04.31.5116.93.15.42.1225.13.31.70.5006.03.44.51.6125.52.54.01.311圖 .?準(zhǔn)確率為 80% 的鳶尾花分類器
?

建立測試數(shù)據(jù)集

評估模型與訓(xùn)練模型相似。最大的區(qū)別在于,樣本來自一個單獨的測試集,而不是訓(xùn)練集。為了公正地評估模型的效果,用于評估模型的樣本務(wù)必與用于訓(xùn)練模型的樣本不同。

測試?Dataset?的建立與訓(xùn)練?Dataset?相似。下載 CSV 文本文件并解析相應(yīng)的值,然后對數(shù)據(jù)稍加隨機化處理:

  1. Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/iris_test.csv

  2. 8192/573 [============================================================================================================================================================================================================================================================================================================================================================================================================================================] - 0s 0us/step

?

?

根據(jù)測試數(shù)據(jù)集評估模型

在以下代碼單元格中,我們會遍歷測試集中的每個樣本,然后將模型的預(yù)測結(jié)果與實際標(biāo)簽進行比較。這是為了衡量模型在整個測試集中的準(zhǔn)確率。


  1. print("Test set accuracy: {:.3%}".format(test_accuracy.result()))

?

Test set accuracy: 96.667%

?

例如,我們可以看到對于最后一批數(shù)據(jù),該模型通常預(yù)測正確:

?

  1. <tf.Tensor: id=115075, shape=(30, 2), dtype=int32, numpy=

  2. array([[1, 1],

  3. [2, 2],

  4. [0, 0],

  5. [1, 1],

  6. [1, 1],

  7. [1, 1],

  8. [0, 0],

  9. [2, 1],

  10. [1, 1],

  11. [2, 2],

  12. [2, 2],

  13. [0, 0],

  14. [2, 2],

  15. [1, 1],

  16. [1, 1],

  17. [0, 0],

  18. [1, 1],

  19. [0, 0],

  20. [0, 0],

  21. [2, 2],

  22. [0, 0],

  23. [1, 1],

  24. [2, 2],

  25. [1, 1],

  26. [1, 1],

  27. [1, 1],

  28. [0, 0],

  29. [1, 1],

  30. [2, 2],

  31. [1, 1]], dtype=int32)>

?

使用經(jīng)過訓(xùn)練的模型進行預(yù)測

我們已經(jīng)訓(xùn)練了一個模型并“證明”它是有效的,但在對鳶尾花品種進行分類方面,這還不夠?,F(xiàn)在,我們使用經(jīng)過訓(xùn)練的模型對?無標(biāo)簽樣本(即包含特征但不包含標(biāo)簽的樣本)進行一些預(yù)測。

在現(xiàn)實生活中,無標(biāo)簽樣本可能來自很多不同的來源,包括應(yīng)用、CSV 文件和數(shù)據(jù)。暫時我們將手動提供三個無標(biāo)簽樣本以預(yù)測其標(biāo)簽?;叵胍幌拢瑯?biāo)簽編號映射表示法:

  • 0: 山鳶尾

  • 1: 變色鳶尾

  • 2: 維吉尼亞鳶尾


  1. for i, logits in enumerate(predictions):

  2. ? class_idx = tf.argmax(logits).numpy()

  3. ? p = tf.nn.softmax(logits)[class_idx]

  4. ? name = class_names[class_idx]

  5. ? print("Example {} prediction: {} ({:4.1f}%)".format(i, name, 100*p))

?

  1. Example 0 prediction: Iris setosa (99.9%)

  2. Example 1 prediction: Iris versicolor (100.0%)

  3. Example 2 prediction: Iris virginica (96.2%)

參考文獻

1.r語言用神經(jīng)網(wǎng)絡(luò)改進nelson-siegel模型擬合收益率曲線分析

2.r語言實現(xiàn)擬合神經(jīng)網(wǎng)絡(luò)預(yù)測和結(jié)果可視化

3.python用遺傳算法-神經(jīng)網(wǎng)絡(luò)-模糊邏輯控制算法對樂透分析

4.用于nlp的python:使用keras的多標(biāo)簽文本lstm神經(jīng)網(wǎng)絡(luò)分類

5.用r語言實現(xiàn)神經(jīng)網(wǎng)絡(luò)預(yù)測股票實例

6.R語言基于Keras的小數(shù)據(jù)集深度學(xué)習(xí)圖像分類

7.用于NLP的seq2seq模型實例用Keras實現(xiàn)神經(jīng)機器翻譯

8.python中基于網(wǎng)格搜索算法優(yōu)化的深度學(xué)習(xí)模型分析糖

9.matlab使用貝葉斯優(yōu)化的深度學(xué)習(xí)請選中你要保存的內(nèi)容,粘貼到此文本框


TensorFlow 2建立神經(jīng)網(wǎng)絡(luò)分類模型—以iris數(shù)據(jù)為例的評論 (共 條)

分享到微博請遵守國家法律
奉节县| 雷州市| 天台县| 兴化市| 大关县| 镇原县| 涿州市| 西峡县| 莱芜市| 望江县| 霸州市| 文化| 志丹县| 青海省| 静宁县| 沙雅县| 沽源县| 临夏市| 望谟县| 綦江县| 即墨市| 宜阳县| 柳林县| 岗巴县| 九江市| 商丘市| 沾益县| 诸城市| 婺源县| 金坛市| 宜黄县| 长春市| 攀枝花市| 垦利县| 肥城市| 甘德县| 临海市| 瑞安市| 原平市| 寻乌县| 五台县|