自慰套教室~女子全员妊娠,精品无码国产自产拍在线观看蜜桃,亚洲国产精品成人精品无码区,久别的草原在线看视频免费

集團站切換校區

驗證碼已發送,請查收短信

復制成功
微信號:togogoi
添加微信好友, 詳細了解課程
已復制成功,如果自動跳轉微信失敗,請前往微信添加好友
打開微信
圖標

業界新聞

當前位置:首頁 > >業界新聞 > >

人工智能AI培訓_TensorFlow 2.0 keras快速入門

發布時間: 2019-07-09 14:02:31

人工智能AI培訓_TensorFlow 2.0 keras快速入門

AI培訓

1. 導入tf.keras

tensorflow2推薦使用keras構建網絡,常見的神經網絡都包含在keras.layer(最新的tf.keras的版本可能和keras不同)

tf.k?eras Kera?s API TensorFlow 里的實現。這是一個高級API,用于構建和訓練模型,同時兼容 TensorFlow 的絕大部分功能,比如,eager exec?ution, tf.?data模塊及 Esti?mators。 tf.ke?ras使得 TensorFlow 更容易使用,且保持 TF 的靈活性和性能。
首先需要在您的代碼開始時導入tf.keras

import tensorflow as tf
#tensorflow2.0 使用keras一般通過tensorflow.keras來使用,但是pycharm沒有提示,原因是因為實際的keras路徑放在tensorflow/python/keras,但是在程序中tensorflow有沒有python這個目錄,解決方法如下
try:
    import tensorflow.keras as keras
except:
    import tensorflow.python.keras as keras
#這樣pycharm既可以有提示,同時也不需要在程序運行的時候修改代碼了。非常完美的解決手段,當然如果你不適用ide就不需要這些東西了。
print(tf.__version__)
print(keras.__version__)

tf.keras可以運行任何與Keras兼容的代碼,但請記?。?/span>

        最新TensorFlow版本中的tf.keras版本可能與PyPI的最新keras版本不同。 檢查tf.keras.version。

        保存模型的權重時,tf.keras默認為 checkp?oint 格式。 通過save_format ='h5'使用HDF5。

2. 構建簡單模型

2.1. 模型堆疊

最常見的模型類型是層的堆疊:keras.Sequential 模型

Keras中,您可以組裝圖層來構建模型。 模型(通常)是圖層圖。 最常見的模型類型是一堆層:tf.keras.S?equential 模型。構建一個簡單的全連接網絡(即多層感知器):

# Dense函數參數
#     units: 正整數,輸出空間維度。
#     activation: 激活函數 (詳見 activations)。 若不指定,則不使用激活函數 (即,「線性」激活: a(x) = x)。
#     use_bias: 布爾值,該層是否使用偏置向量。
#     kernel_initializer: kernel 權值矩陣的初始化器 (詳見 initializers)。
#     bias_initializer: 偏置向量的初始化器 (see initializers).
#     kernel_regularizer: 運用到 kernel 權值矩陣的正則化函數 (詳見 regularizer)。
#     bias_regularizer: 運用到偏置向的的正則化函數 (詳見 regularizer)。
#     activity_regularizer: 運用到層的輸出的正則化函數 (它的 "activation")。 (詳見 regularizer)。
#     kernel_constraint: 運用到 kernel 權值矩陣的約束函數 (詳見 constraints)。
#     bias_constraint: 運用到偏置向量的約束函數 (詳見 constraints)。

# Dropout參數解釋:
#     inputs:必須,即輸入數據。
#     rate:可選,默認為 0.5,即 dropout rate,如設置為 0.1,則意味著會丟棄 10% 的神經元。
#     noise_shape:可選,默認為 None,int32 類型的一維 Tensor,它代表了 dropout mask 的 shape,dropout mask 會與 inputs 相乘對 inputs 做轉換,例如 inputs 的 shape 為 (batch_size, timesteps, features),但我們想要 droput - - mask 在所有 timesteps 都是相同的,我們可以設置 noise_shape=[batch_size, 1, features]。
#     seed:可選,默認為 None,即產生隨機熟的種子值。
#     training:可選,默認為 False,布爾類型,即代表了是否標志位 training 模式。
#     name:可選,默認為 None,dropout 層的名稱。

model = keras.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

2.2. 網絡配置

tf.keras.layers中網絡配置:

activation:設置層的激活函數。此參數由內置函數的名稱指定,或指定為可調用對象。默認情況下,系統不會應用任何激活函數。

kernel_initializer bias_initializer:創建層權重(核和偏差)的初始化方案。此參數是一個名稱或可調用對象,默認為 “Glorot uniform” 初始化器。

kernel_regularizer bias_regularizer:應用層權重(核和偏差)的正則化方案,例如 L1 L2 正則化。默認情況下,系統不會應用正則化函數。

keras.layers.Dense(32, activation='sigmoid')
keras.layers.Dense(32, activation=tf.sigmoid)
keras.layers.Dense(32, kernel_initializer='orthogonal')
keras.layers.Dense(32, kernel_initializer=tf.keras.initializers.glorot_normal)
keras.layers.Dense(32, kernel_regularizer=tf.keras.regularizers.l2(0.01))
keras.layers.Dense(32, kernel_regularizer=tf.keras.regularizers.l1(0.01))

3. 訓練和評估

3.1. 設置訓練流程

構建模型后,通過調用compile方法配置其訓練過程:

# compile函數:在模型準備好進行培訓之前,它需要更多設置。這些是在模型的編譯步驟中添加的:
#
#     損失函數 - 這可以衡量模型在訓練過程中的準確程度。我們希望最小化此功能,以便在正確的方向上“引導”模型。
#     優化器 - 這是基于它看到的數據及其損失函數更新模型的方式。
#     度量標準 - 用于監控培訓和測試步驟。以下示例使用精度,即正確分類的圖像的分數。

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

compile有三個重要參數:

· optimizer:訓練過程的優化方法。此參數通過 tf.t?rain 模塊的優化方法的實例來指定,比如:AdamOpt?imizer, RMSPropOptim?izer, GradientDescentOptimizer。

· loss:訓練過程中使用的損失函數(通過最小化損失函數來訓練模型)。 常見的選擇包括:均方誤差(mse),categorical_crossentropy和binary_crossentropy。 損失函數由名稱或通過從tf.keras.losses模塊傳遞可調用對象來指定。

· metrics:訓練過程中,監測的指標(Used to monitor training)。
指定方法:名稱 可調用對象 from the tf.keras?.metrics 模塊。
以下顯示了配置培訓模型的幾個示例:

# Configure a model for mean-squared error regression.

model.compile(optimizer=tf.train.AdamOptimizer(0.01),

              loss='mse',       # mean squared error

              metrics=['mae'])  # mean absolute error

# Configure a model for categorical classification.

model.compile(optimizer=tf.train.RMSPropOptimizer(0.01),

              loss=keras.losses.categorical_crossentropy,

              metrics=[keras.metrics.categorical_accuracy])

3.2. compile函數

keras model.compile(loss='目標函數 ', optimize?r='adam', metrics=['accuracy'])

目標函數,或稱損失函數,是網絡中的性能函數,也是編譯一個模型必須的兩個參數之一。由于損失函數種類眾多,下面以keras官網手冊的為例。

在官方keras.io里面,有如下資料:

· mean_squared_error或mse

· mean_absolute_error或mae

· mean_absolute_percentage_error或mape

· mean_squared_logarithmic_error或msle

· squared_hinge

· hinge

· binary_crossentropy(亦稱作對數損失,logloss)

· categorical_crossentropy:亦稱作多類的對數損失,注意使用該目標函數時,需要將標簽轉化為形如(nb_samples, nb_classes)的二值序列

· sparse_categorical_crossentrop:如上,但接受稀疏標簽。注意,使用該函數時仍然需要你的標簽與輸出值的維度相同,你可能需要在標簽數據上增加一個維度:np.expand_dims(y,-1)

· kullback_leibler_divergence:從預測值概率分布Q到真值概率分布P的信息增益,用以度量兩個分布的差異.

· cosine_proximity:即預測值與真實標簽的余弦距離平均值的相反數

3.3. 評估與預測

tf.keras.Model.e?valuate  tf.keras.Model.predict 方法能夠使用 NumPy 數據 和 tf.da?ta.Dataset 數據。要評估所提供數據的推理模式損失和指標,并且作為NumPy數組,預測所提供數據的推斷中最后一層的輸出:

#訓練和評估模型:
model.fit(x_train, y_train, epochs=5)
test_loss, test_acc = model.evaluate(x_test,y_test)
print('Test accuracy:', test_acc)
predictions = model.predict(x_test)
print("==================")
print(predictions)

3.4. 完整代碼

from __future__ import absolute_import, division, print_function, unicode_literals
import tensorflow as tf
#tensorflow2.0 使用keras一般通過tensorflow.keras來使用,但是pycharm沒有提示,原因是因為實際的keras路徑放在tensorflow/python/keras,但是在程序中tensorflow有沒有python這個目錄,解決方法如下
try:
    import tensorflow.keras as keras
except:
    import tensorflow.python.keras as keras
#加載并準備MNIST數據集,將樣本從整數轉換為浮點數
mnist = keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
#將數據歸一化,在訓練網絡之前,必須對數據進行預處理。如果您檢查訓練集中的第一個圖像,您將看到像素值落在0到255的范圍內
# 在饋送到神經網絡模型之前,我們將這些值縮放到0到1的范圍。為此,將圖像組件的數據類型從整數轉換為float,并除以255.0。
x_train, x_test = x_train / 255.0, x_test / 255.0

#通過堆疊圖層構建tf.keras.Sequential模型。選擇用于訓練的優化器和損失函數:
# 該網絡中的第一層tf.keras.layers.Flatten將圖像的格式從2d陣列(28乘28像素)轉換為28 * 28 = 784像素的1d陣列??梢詫⒋藞D層視為圖像中未堆疊的像素行并將其排列。該層沒有要學習的參數; 它只重新格式化數據。
# 在像素被展平之后,網絡由tf.keras.layers.Dense兩層序列組成。這些是密集連接或完全連接的神經層。第一Dense層有128個節點(或神經元)。第二(和最后)層是10節點softmax層 - 這返回10個概率分數的數組,其總和為1.每個節點包含指示當前圖像屬于10個類之一的概率的分數。

# Dense函數參數
#     units: 正整數,輸出空間維度。
#     activation: 激活函數 (詳見 activations)。 若不指定,則不使用激活函數 (即,「線性」激活: a(x) = x)。
#     use_bias: 布爾值,該層是否使用偏置向量。
#     kernel_initializer: kernel 權值矩陣的初始化器 (詳見 initializers)。
#     bias_initializer: 偏置向量的初始化器 (see initializers).
#     kernel_regularizer: 運用到 kernel 權值矩陣的正則化函數 (詳見 regularizer)。
#     bias_regularizer: 運用到偏置向的的正則化函數 (詳見 regularizer)。
#     activity_regularizer: 運用到層的輸出的正則化函數 (它的 "activation")。 (詳見 regularizer)。
#     kernel_constraint: 運用到 kernel 權值矩陣的約束函數 (詳見 constraints)。
#     bias_constraint: 運用到偏置向量的約束函數 (詳見 constraints)。

# Dropout參數解釋:
#     inputs:必須,即輸入數據。
#     rate:可選,默認為 0.5,即 dropout rate,如設置為 0.1,則意味著會丟棄 10% 的神經元。
#     noise_shape:可選,默認為 None,int32 類型的一維 Tensor,它代表了 dropout mask 的 shape,dropout mask 會與 inputs 相乘對 inputs 做轉換,例如 inputs 的 shape 為 (batch_size, timesteps, features),但我們想要 droput - - mask 在所有 timesteps 都是相同的,我們可以設置 noise_shape=[batch_size, 1, features]。
#     seed:可選,默認為 None,即產生隨機熟的種子值。
#     training:可選,默認為 False,布爾類型,即代表了是否標志位 training 模式。
#     name:可選,默認為 None,dropout 層的名稱。

model = keras.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

# compile函數:在模型準備好進行培訓之前,它需要更多設置。這些是在模型的編譯步驟中添加的:
#
#     損失函數 - 這可以衡量模型在訓練過程中的準確程度。我們希望最小化此功能,以便在正確的方向上“引導”模型。
#     優化器 - 這是基于它看到的數據及其損失函數更新模型的方式。
#     度量標準 - 用于監控培訓和測試步驟。以下示例使用精度,即正確分類的圖像的分數。

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
#訓練和評估模型:
model.fit(x_train, y_train, epochs=5)
test_loss, test_acc = model.evaluate(x_test,y_test)
print('Test accuracy:', test_acc)
predictions = model.predict(x_test)
print("==================")
print(predictions)

本實驗利用網上已有的北京房價數據集預測了北京的房價,實現了TensorFlow的線性回歸應用。

上一篇: Python培訓_Python核心類型之元組

下一篇: 騰科華為培訓課程之組播詳解

在線咨詢 ×

您好,請問有什么可以幫您?我們將竭誠提供最優質服務!

<蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>