深度学习--TensorFlow(6)神经网络 -- 拟合线性函数非线性函数
生活随笔
收集整理的這篇文章主要介紹了
深度学习--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)神经网络 -- 拟合线性函数非线性函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深度学习--TensorFlow(5)B
- 下一篇: 深度学习--TensorFlow(项目)