成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Pytorch中的NN模塊并實現第一個神經網絡模型

人工智能 深度學習
PyTorch是一個基于Torch的Python開源機器學習庫,用于自然語言處理等應用程序。它主要由Facebookd的人工智能小組開發,不僅能夠 實現強大的GPU加速,同時還支持動態神經網絡,這一點是現在很多主流框架如TensorFlow都不支持的。

 

在PyTorch建立模型,主要是NN模塊。

nn.Linear

nn.Linear是創建一個線性層。這里需要將輸入和輸出維度作為參數傳遞。

  1. linear = nn.Linear(10, 2) 
  2. example_input = torch.randn(3, 10) 
  3. example_output = linear(example_input) 
  4. example_output 

上面代碼linear接受nx10的輸入并返回nx2的輸出。

  1. print(example_input) 
  2. print(example_output) 
  3.  
  4. tensor([[ 1.1122, -0.1381,  0.5547, -0.3326, -0.5676,  0.2810, -0.5521, -0.8729, 
  5.          -0.6627,  0.8729], 
  6.         [ 1.9134,  0.2397, -0.8340,  1.1532, -1.6725,  0.6171, -0.0357, -1.6848, 
  7.          -0.8454,  0.3876], 
  8.         [-0.0786, -0.1541, -0.8385, -0.1587, -0.0121,  1.4457, -0.0132,  1.5653, 
  9.          -1.6954, -0.9350]]) 
  10. # 輸出如下 
  11. tensor([[-0.1249, -0.8002], 
  12.         [-1.0945, -0.2297], 
  13.         [-0.3558,  0.8439]], grad_fn=<AddmmBackward>) 

nn.Relu

nn.Relu對線性的給定輸出執行 relu 激活函數操作。

  1. relu = nn.ReLU()  
  2. relu_output = relu(example_output)  
  3. relu_output 
  4.  
  5. # 輸出如下 
  6. tensor([[0.0000, 0.0000], 
  7.         [0.0000, 0.0000], 
  8.         [0.0000, 0.8439]], grad_fn=<ReluBackward0>) 

nn.BatchNorm1d

nn.BatchNorm1d是一種標準化技術,用于在不同批次的輸入中保持一致的均值和標準偏差。

  1. batchnorm = nn.BatchNorm1d(2)  
  2. batchnorm_output = batchnorm(relu_output)  
  3. batchnorm_output 
  4.  
  5. # 輸出如下 
  6. tensor([[ 0.0000, -0.7071], 
  7.         [ 0.0000, -0.7071], 
  8.         [ 0.0000,  1.4142]], grad_fn=<NativeBatchNormBackward>) 

nn.Sequential

nn.Sequential一次性創建一系列操作。和tensorflow中的Sequential完全一樣。

  1. mlp_layer = nn.Sequential( 
  2.     nn.Linear(5, 2), 
  3.     nn.BatchNorm1d(2), 
  4.     nn.ReLU() 
  5. test_example = torch.randn(5,5) + 1 
  6. print("input: "
  7. print(test_example) 
  8. print("output: "
  9. print(mlp_layer(test_example)) 
  10.  
  11. # 輸出如下 
  12. input:  
  13. tensor([[ 1.4617,  1.2446,  1.4919,  1.5978, -0.3410], 
  14.         [-0.2819,  0.5567,  1.0113,  1.8053, -0.0833], 
  15.         [ 0.2830,  1.0857,  1.2258,  2.6602,  0.1339], 
  16.         [ 0.8682,  0.9344,  1.3715,  0.0279,  1.8011], 
  17.         [ 0.6172,  1.1414,  0.6030,  0.3876,  1.3653]]) 
  18. output:  
  19. tensor([[0.0000, 0.0000], 
  20.         [0.0000, 1.3722], 
  21.         [0.0000, 0.8861], 
  22.         [1.0895, 0.0000], 
  23.         [1.3047, 0.0000]], grad_fn=<ReluBackward0>) 

在上面的模型中缺少了優化器,我們無法得到對應損失。

  1. import torch.optim as optim 
  2. adam_opt = optim.Adam(mlp_layer.parameters(), lr=1e-1) 
  3. # 這里lr表示學習率,1e-1表示0.1 
  4. train_example = torch.randn(100,5) + 1 
  5. adam_opt.zero_grad() 
  6. # 我們將使用1減去平均值,作為簡單損失函數 
  7. cur_loss = torch.abs(1 - mlp_layer(train_example)).mean() 
  8. cur_loss.backward() 
  9. # 更新參數 
  10. adam_opt.step() 
  11. print(cur_loss.data) 
  12. # 輸出如下 
  13. tensor(0.7467) 

雖然上面只是用了一個epoch,訓練線性模型得到loss為0.7467,上面就是NN模型建立model的整個流程,

第一個神經網絡模型

下面實現第一個分類神經網絡,其中一個隱藏層用于開發單個輸出單元。

首先,使用以下命令導入 PyTorch 庫 -

  1. import torch  
  2. import torch.nn as nn 

定義所有層和批量大小以開始執行神經網絡,如下所示 -

  1. n_in, n_h, n_out, batch_size = 10, 5, 1, 10 

由于神經網絡包括輸入數據的組合以獲得相應的輸出數據,我們將遵循以下相同的程序 -

  1. x = torch.randn(batch_size, n_in) 
  2. y = torch.tensor([[1.0], [0.0], [0.0],  
  3. [1.0], [1.0], [1.0], [0.0], [0.0], [1.0], [1.0]]) 

創建順序模型。使用下面代碼,創建一個順序模型 -

  1. model = nn.Sequential(nn.Linear(n_in, n_h), 
  2.    nn.ReLU(), 
  3.    nn.Linear(n_h, n_out), 
  4.    nn.Sigmoid()) 

借助梯度下降優化器構建損失函數,如下所示 -

  1. # 構造損失函數 
  2. criterion = torch.nn.MSELoss() 
  3. # 構造優化器 
  4. optimizer = torch.optim.SGD(model.parameters(), lr = 0.01) 

使用給定代碼行的迭代循環實現梯度下降模型 -

  1. # 梯度下降 
  2. for epoch in range(50): 
  3.    # 正向傳遞:通過將x傳遞給模型來計算預測的y 
  4.    y_pred = model(x) 
  5.  
  6.    # 計算loss 
  7.    loss = criterion(y_pred, y) 
  8.  
  9.    # 梯度清0 
  10.    optimizer.zero_grad() 
  11.  
  12.    # 反向傳播,求解梯度 
  13.    loss.backward() 
  14.  
  15.    # 更新模型參數 
  16.    optimizer.step() 
  17.    if epoch % 10 == 0: 
  18.       print('epoch: ', epoch,' loss: ', loss.item()) 

輸出如下

  1. epoch:  0  loss:  0.2508794665336609 
  2. epoch:  10  loss:  0.24847669899463654 
  3. epoch:  20  loss:  0.24615907669067383 
  4. epoch:  30  loss:  0.24392127990722656 
  5. epoch:  40  loss:  0.24175791442394257 

 【編輯推薦】

 

責任編輯:姜華 來源: Python之王
相關推薦

2023-05-06 12:47:41

2025-02-25 14:13:31

2025-02-19 18:00:00

神經網絡模型AI

2019-10-28 08:00:00

Keras神經網絡人工智能

2017-12-28 14:44:42

Python人工智能神經網絡

2024-08-22 08:21:10

算法神經網絡參數

2017-04-26 08:31:10

神經網絡自然語言PyTorch

2020-12-19 11:05:57

循環神經網絡PyTorch神經網絡

2020-08-14 10:01:25

編程神經網絡C語言

2024-09-24 07:28:10

2018-08-27 17:05:48

tensorflow神經網絡圖像處理

2024-11-11 00:00:02

卷積神經網絡算法

2024-12-04 10:33:17

2014-07-24 14:35:26

Linux內核模塊

2018-04-08 11:20:43

深度學習

2024-11-05 16:19:55

2020-09-18 11:40:44

神經網絡人工智能PyTorch

2024-04-30 14:54:10

2011-08-29 15:12:24

UbuntuLinux模塊

2025-03-31 08:50:00

模型量化神經網絡AI
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩高清av| 男女视频在线观看 | 国产精品久久久久久久久久久免费看 | 日韩二| a级大片免费观看 | 久久国产一区 | 久久精品中文字幕 | 亚洲97 | 亚洲成人精品一区二区 | 久久神马| 亚洲精品在线视频 | 亚洲精品一区二区在线观看 | 一级黄色裸片 | 亚洲综合婷婷 | 成人在线视频免费看 | 日韩一区精品 | 国产精品成人品 | 欧美一区二区三区视频 | 九一视频在线播放 | 国产亚洲精品精品国产亚洲综合 | 欧美一级免费看 | 欧美综合一区 | 欧美日韩亚 | 欧洲视频一区二区 | 自拍偷拍第一页 | 国产精品久久一区二区三区 | 日日精品| 欧美成人免费电影 | 亚洲天堂久久新 | 国产精品久久国产精品 | 69福利影院 | 精品一级 | 成年女人免费v片 | 成人免费视频网站在线看 | 久久久精品网站 | 亚洲一区二区av | 日韩三级电影一区二区 | 国产精品高潮呻吟久久 | 中文字幕欧美日韩一区 | 久久毛片| 欧美成人精品在线 |