中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 如何理解python進階TensorFlow神經網絡擬合線性及非線性函數

如何理解python進階TensorFlow神經網絡擬合線性及非線性函數

發布時間:2021-10-18 09:02:21 來源:億速云 閱讀:209 作者:iii 欄目:開發技術

本篇內容主要講解“如何理解python進階TensorFlow神經網絡擬合線性及非線性函數”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何理解python進階TensorFlow神經網絡擬合線性及非線性函數”吧!

目錄
  • 一、擬合線性函數

    • 生成隨機坐標

    • 神經網絡擬合

    • 代碼

  • 二、擬合非線性函數

    • 生成二次隨機點

    • 神經網絡擬合

    • 代碼

一、擬合線性函數

學習率0.03,訓練1000次:

如何理解python進階TensorFlow神經網絡擬合線性及非線性函數

學習率0.05,訓練1000次:

如何理解python進階TensorFlow神經網絡擬合線性及非線性函數

學習率0.1,訓練1000次:

如何理解python進階TensorFlow神經網絡擬合線性及非線性函數

可以發現,學習率為0.05時的訓練效果是最好的。

生成隨機坐標

1、生成x坐標

2、生成隨機干擾

3、計算得到y坐標

4、畫點

# 生成隨機點
def Produce_Random_Data():
    global x_data, y_data
    # 生成x坐標
    x_data = np.random.rand(100)
     # 生成隨機干擾
    noise = np.random.normal(0, 0.01, x_data.shape)
    #                       均值 標準差 輸出的形狀
     # 計算y坐標
    y_data = 0.2 * x_data + 0.3 + noise
     # 畫點
    plt.scatter(x_data, y_data)

神經網絡擬合

1、創建神經網絡

2、設置優化器與損失函數

3、訓練(根據已有數據)

4、預測(給定橫坐標,預測縱坐標)

# 創建神經網絡(訓練及預測)
def Neural_Network():
    # 1 創建神經網絡
    model = tf.keras.Sequential()
    # 為神經網絡添加層
    model.add(tf.keras.layers.Dense(units=1, input_dim=1))
#                             隱藏層 神經元個數 輸入神經元個數
    # 2 設置優化器與損失函數
    model.compile(optimizer=SGD(0.05), loss='mse')
#                 優化器     學習率0.05  損失函數
# SGD:隨機梯度下降法
# mse:均方誤差
    # 3 訓練
    for i in range(1000):
        # 訓練數據并返回損失
        loss = model.train_on_batch(x_data, y_data)
        # print(loss)
     # 4 預測
    y_pred = model.predict(x_data)
     # 5 顯示預測結果(擬合線)
    plt.plot(x_data, y_pred, 'r-', lw=3)    #lw:線條粗細

代碼

# 擬合線性函數
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras.optimizers import SGD 
# 生成隨機點
def Produce_Random_Data():
    global x_data, y_data
    # 生成x坐標
    x_data = np.random.rand(100) 
    # 生成隨機干擾
    noise = np.random.normal(0, 0.01, x_data.shape)
    #                       均值 標準差 輸出的形狀
     # 計算y坐標
    y_data = 0.2 * x_data + 0.3 + noise 
    # 畫點
    plt.scatter(x_data, y_data)
  
# 創建神經網絡(訓練及預測)
def Neural_Network():
    # 1 創建神經網絡
    model = tf.keras.Sequential()
    # 為神經網絡添加層
    model.add(tf.keras.layers.Dense(units=1, input_dim=1))
#                             隱藏層 神經元個數 輸入神經元個數
    # 2 設置優化器與損失函數
    model.compile(optimizer=SGD(0.05), loss='mse')
#                 優化器     學習率0.05  損失函數
# SGD:隨機梯度下降法
# mse:均方誤差
     # 3 訓練
    for i in range(1000):
        # 訓練數據并返回損失
        loss = model.train_on_batch(x_data, y_data)
        # print(loss)
     # 4 預測
    y_pred = model.predict(x_data)
 
    # 5 顯示預測結果(擬合線)
    plt.plot(x_data, y_pred, 'r-', lw=3)    #lw:線條粗細 
# 1、生成隨機點
Produce_Random_Data()
 
# 2、神經網絡訓練與預測
Neural_Network()
 
plt.show()

二、擬合非線性函數

第一層10個神經元:

如何理解python進階TensorFlow神經網絡擬合線性及非線性函數

第一層5個神經元:

如何理解python進階TensorFlow神經網絡擬合線性及非線性函數

我感覺第一層5個神經元反而訓練效果比10個的好。。。

生成二次隨機點

步驟:

1、生成x坐標

2、生成隨機干擾

3、計算y坐標

4、畫散點圖

# 生成隨機點
def Produce_Random_Data():
    global x_data, y_data
    # 生成x坐標
    x_data = np.linspace(-0.5, 0.5, 200)[:, np.newaxis]
    #                                       增加一個維度
     # 生成噪聲
    noise = np.random.normal(0, 0.02, x_data.shape)
    #                       均值 方差 
    # 計算y坐標
    y_data = np.square(x_data) + noise 
    # 畫散點圖
    plt.scatter(x_data, y_data)

神經網絡擬合

步驟:

1、創建神經網絡

2、設置優化器及損失函數

3、訓練(根據已有數據)

4、預測(給定橫坐標,預測縱坐標)

5、畫圖

# 神經網絡擬合(訓練及預測)
def Neural_Network():
    # 1 創建神經網絡
    model = tf.keras.Sequential()
    # 添加層
    # 注:input_dim(輸入神經元個數)只需要在輸入層重視設置,后面的網絡可以自動推斷出該層的對應輸入
    model.add(tf.keras.layers.Dense(units=5,  input_dim=1, activation='tanh'))
#                                   神經元個數 輸入神經元個數 激活函數
    model.add(tf.keras.layers.Dense(units=1, activation='tanh')) 
    # 2 設置優化器和損失函數
    model.compile(optimizer=SGD(0.3), loss='mse')
#                 優化器     學習率     損失函數(均方誤差) 
    # 3 訓練
    for i in range(3000):
        # 訓練一次數據,返回loss
        loss = model.train_on_batch(x_data, y_data) 
    # 4 預測
    y_pred = model.predict(x_data) 
    # 5 畫圖
    plt.plot(x_data, y_pred, 'r-', lw=5)

代碼

# 擬合非線性函數
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras.optimizers import SGD 
# 生成隨機點
def Produce_Random_Data():
    global x_data, y_data
    # 生成x坐標
    x_data = np.linspace(-0.5, 0.5, 200)[:, np.newaxis]
    #                                       增加一個維度 
    # 生成噪聲
    noise = np.random.normal(0, 0.02, x_data.shape)
    #                       均值 方差 
    # 計算y坐標
    y_data = np.square(x_data) + noise 
    # 畫散點圖
    plt.scatter(x_data, y_data) 
# 神經網絡擬合(訓練及預測)
def Neural_Network():
    # 1 創建神經網絡
    model = tf.keras.Sequential() 
    # 添加層
    # 注:input_dim(輸入神經元個數)只需要在輸入層重視設置,后面的網絡可以自動推斷出該層的對應輸入
    model.add(tf.keras.layers.Dense(units=5, input_dim=1, activation='tanh'))
#                                   神經元個數  輸入神經元個數 激活函數
    model.add(tf.keras.layers.Dense(units=1, activation='tanh'))
    #                               輸出神經元個數 
    # 2 設置優化器和損失函數
    model.compile(optimizer=SGD(0.3), loss='mse')
#                 優化器     學習率     損失函數(均方誤差) 
    # 3 訓練
    for i in range(3000):
        # 訓練一次數據,返回loss
        loss = model.train_on_batch(x_data, y_data) 
    # 4 預測
    y_pred = model.predict(x_data)
    # 5 畫圖
    plt.plot(x_data, y_pred, 'r-', lw=5)
# 1、生成隨機點
Produce_Random_Data()
 
# 2、神經網絡訓練與預測
Neural_Network()
 
plt.show()

到此,相信大家對“如何理解python進階TensorFlow神經網絡擬合線性及非線性函數”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新宁县| 介休市| 乐昌市| 蚌埠市| 龙州县| 廉江市| 徐州市| 亚东县| 平原县| 红桥区| 乐陵市| 阿图什市| 天柱县| 师宗县| 福海县| 大安市| 鹿泉市| 诏安县| 宁乡县| 安塞县| 仙居县| 铜鼓县| 平凉市| 曲松县| 寿阳县| 花莲县| 马关县| 女性| 佛教| 工布江达县| 扶风县| 揭阳市| 陆丰市| 长岭县| 积石山| 梅河口市| 台中县| 咸宁市| 河间市| 武宁县| 高陵县|