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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Pytorch系列-25]:神经网络基础 - 单个无激活函数的神经元实现简单线性回归 - 2

發布時間:2023/12/16 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Pytorch系列-25]:神经网络基础 - 单个无激活函数的神经元实现简单线性回归 - 2 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?作者主頁(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文網址:https://blog.csdn.net/HiWangWenBing/article/details/120600611


目錄

前言 深度學習模型框架

第1章 業務領域分析

1.1? 步驟1-1:業務領域分析

1.2 步驟1-2:業務建模

1.3 代碼實例前置條件

第2章 前向運算模型定義

2.1?步驟2-1:數據集選擇

2.2?步驟2-2:數據預處理

2.3 步驟2-3:神經網絡建模

2.4 步驟2-4:神經網絡輸出

第3章 后向運算模型定義

3.1 步驟3-1:定義loss函數

3.2? 步驟3-2:定義優化器

3.3 步驟3-3:模型訓練

3.4 步驟3-4:模型驗證

3.5 步驟3-5:模型可視化

第4章 模型部署

4.1 步驟4-1:模型部署



前言 深度學習模型框架

[人工智能-深度學習-8]:神經網絡基礎 - 機器學習、深度學習模型、模型訓練_文火冰糖(王文兵)的博客-CSDN博客_神經網絡與深度學習第1章 白話機器學習[人工智能-綜述-4]:白話深度學習-- 無基礎小白都能理解機器學習的核心概念_文火冰糖(王文兵)的博客-CSDN博客[人工智能-深度學習-7]:神經網絡基礎 - 人工神經網絡ANN_文火冰糖(王文兵)的博客-CSDN博客第2章 機器學習的模型與步驟2.1深度學習與機器學習上述三個概念中:人工智能的概念最廣泛,所以有能機器具有類”人“一樣智能的技術、非技術(如倫理)的領域,都是人工智能。機器獲取“智能”的一個重要手段是,機器具備“自我學習”的能力,...https://blog.csdn.net/HiWangWenBing/article/details/120462734

第1章 業務領域分析

1.1? 步驟1-1:業務領域分析

1.2 步驟1-2:業務建模

1.3 代碼實例前置條件

#環境準備 import numpy as np # numpy數組庫 import math # 數學運算庫 import matplotlib.pyplot as plt # 畫圖庫import torch # torch基礎庫 import torch.nn as nn # torch神經網絡庫print("Hello World") print(torch.__version__) print(torch.cuda.is_available()) Hello World 1.8.0 False

第2章 前向運算模型定義

2.1?步驟2-1:數據集選擇

這里不需要采用已有的開源數據集,只需要自己構建數據集即可。

#2-1 準備數據集 x_sample = np.linspace(0, 5, 64)noise = np.random.randn(64) y_sample = 2 * x_sample + 1 + noisey_line = 2 * x_sample + 1#可視化數據 plt.scatter(x_sample, y_sample) plt.plot(x_sample, y_line,'red')

2.2?步驟2-2:數據預處理

(1)把numpy一維數據轉換成二維樣本數據

(2)把numpy樣本數據轉換成torch樣本數據

# 2-2 對數據預處理 print("Numpy原始樣本的形狀") print(x_sample.shape) print(y_sample.shape)# 把一維線性數據轉換成二維樣本數據,每個樣本數據為一維 print("\nNumpy訓練樣本的形狀") x_numpy = x_sample.reshape(-1, 1).astype('float32') y_numpy = y_sample.reshape(-1, 1).astype('float32') print(x_numpy.shape) print(y_numpy.shape)# numpy樣本數據轉換成pytorch樣本數據 print("\ntorch訓練樣本的形狀") x_train = torch.from_numpy(x_numpy) y_train = torch.from_numpy(y_numpy)print(x_train.shape) print(y_train.shape)plt.scatter(x_train, y_train)

Numpy原始樣本的形狀 (64,) (64,)Numpy訓練樣本的形狀 (64, 1) (64, 1)torch訓練樣本的形狀 torch.Size([64, 1]) torch.Size([64, 1])

Out[3]:

<matplotlib.collections.PathCollection at 0x1fdc56524f0>

2.3 步驟2-3:神經網絡建模

這里的神經網絡模型是單輸入(size=1)、單輸出(size=1)、無激活函數的線性神經元。

# 2-3 定義網絡模型 print("定義并初始化模型") w = Variable(torch.randn(1), requires_grad=True) b = Variable(torch.randn(1), requires_grad=True) print(w, w.data) print(b, b.data)def linear_mode(x):return (w * x + b)model = linear_mode 定義并初始化模型 tensor([0.1358], requires_grad=True) tensor([0.1358]) tensor([0.4257], requires_grad=True) tensor([0.4257])

2.4 步驟2-4:神經網絡輸出

# 2-4 定義網絡預測輸出 y_pred = linear_mode(x_train) print(y_pred.shape) torch.Size([64, 1])

備注:輸出是64個樣本的一維數據

第3章 后向運算模型定義

3.1 步驟3-1:定義loss函數

這里采用的MSE loss函數

# 3-1 定義loss函數: # loss_fn= MSE loss def MSELoss(y_, y):return (torch.mean((y_ - y)**2))loss_fn = MSELossprint(loss_fn) <function MSELoss at 0x00000197671FD0D0>

3.2? 步驟3-2:定義優化器

# 3-2 定義優化器 Learning_rate = 0.01 #學習率# lr:指明學習率 def optimizer_SGD_step(lr):w.data = w.data - lr * w.grad.datab.data = b.data - lr * b.grad.dataoptimizer = optimizer_SGD_stepprint(optimizer) <function optimizer_SGD_step at 0x00000197671FD430>

3.3 步驟3-3:模型訓練

# 3-3 模型訓練 w = Variable(torch.randn(1), requires_grad=True) b = Variable(torch.randn(1), requires_grad=True)# 定義迭代次數 epochs = 500loss_history = [] #訓練過程中的loss數據 w_history = [] #訓練過程中的w參數值 b_history = [] #訓練過程中的b參數值for i in range(0, epochs):#(1) 前向計算y_pred = model(x_train)#(2) 計算lossloss = loss_fn(y_pred, y_train)#(3) 反向求導loss.backward(retain_graph=True)#(4) 反向迭代optimizer_SGD_step(Learning_rate)#(5) 復位優化器的梯度#optimizer.zero_grad()w.grad.zero_()b.grad.zero_()#記錄迭代數據loss_history.append(loss.data) w_history.append(w.data)b_history.append(b.data)if(i % 100 == 0):print('epoch {} loss {:.4f}'.format(i, loss.item())) print("\n迭代完成") print("\n訓練后w參數值:", w) print("\n訓練后b參數值:", b) print("\n最小損失數值 :", loss) print(len(loss_history)) print(len(w_history)) print(len(b_history)) epoch 0 loss 42.0689 epoch 100 loss 1.0441 epoch 200 loss 1.0440 epoch 300 loss 1.0439 epoch 400 loss 1.0439迭代完成訓練后w參數值: Parameter containing: tensor([[1.8530]], requires_grad=True) 1.8529784679412842訓練后b參數值: Parameter containing: tensor([1.2702], requires_grad=True) 1.2701895236968994最小損失數值 : tensor(1.0439, grad_fn=<MseLossBackward>) 1.0438624620437622 500 500 500

3.4 步驟3-4:模型驗證

NA

3.5 步驟3-5:模型可視化

# 3-4 可視化模型數據 #model返回的是總tensor,包含grad_fn,用data提取出的tensor是純tensor y_pred = model(x_train).data.numpy().squeeze() print(x_train.shape) print(y_pred.shape) print(y_line.shape)plt.scatter(x_train, y_train, label='SampleLabel') plt.plot(x_train, y_pred, label='Predicted') plt.plot(x_train, y_line, label='Line')plt.legend() plt.show() torch.Size([64, 1]) (64,) (64,)

#顯示loss的歷史數據 plt.plot(loss_history, "r+") plt.title("loss value")

#顯示w參數的歷史數據 plt.plot(w_history, "r+") plt.title("w value")

#顯示b參數的歷史數據 plt.plot(b_history, "r+") plt.title("b value")

第4章 模型部署

4.1 步驟4-1:模型部署

NA


作者主頁(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文網址:https://blog.csdn.net/HiWangWenBing/article/details/120600611

總結

以上是生活随笔為你收集整理的[Pytorch系列-25]:神经网络基础 - 单个无激活函数的神经元实现简单线性回归 - 2的全部內容,希望文章能夠幫你解決所遇到的問題。

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