日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

深度学习--TensorFlow(6)神经网络 -- 拟合线性函数非线性函数

發布時間:2023/11/27 生活经验 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 深度学习--TensorFlow(6)神经网络 -- 拟合线性函数非线性函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、擬合線性函數

1、生成隨機坐標

2、神經網絡擬合

代碼

二、擬合非線性函數

1、生成二次隨機點

2、神經網絡擬合

代碼


一、擬合線性函數

學習率0.03,訓練1000次:

學習率0.05,訓練1000次:

學習率0.1,訓練1000次:?

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

1、生成隨機坐標

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)

2、神經網絡擬合

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個神經元:?

第一層5個神經元:

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

1、生成二次隨機點

?步驟:

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)

2、神經網絡擬合

步驟:

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):# 訓練一次數據,返回lossloss = 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):# 訓練一次數據,返回lossloss = 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()

總結

以上是生活随笔為你收集整理的深度学习--TensorFlow(6)神经网络 -- 拟合线性函数非线性函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。