文章目录
多层感知机
结构:输入层,隐藏层,输出层;mlp 是一种最简单的神经网络算法。
学习率:参数变化的步长
CrossEntropyLoss 是 交叉熵
为什么使用交叉熵
使用交叉熵作为损失函数相比于均方差,可以消除sigmoid的一次导数项(很小的数据),反向传播时可以保留更多的数据,加速网络收敛
torch 的 nn 包里面有input_layer 有 hidden 有 output 都使用nn的Linear构造输入输出节点
optim.Adam() 包含很多的优化包
torch中tensor的使用
torch.tensor(data, dtype=torch.float)
将data数据类型转换为float
如何理解 pytorch 中的tensor 的 dim=-1
dim=-1和dim=2 是同样的效果
tensor.T相当于是在做转置
zero_grad() 优化器的梯度去除是为了不让上一次的梯度影响这一次的传播,因此需要在方向传播之前完成
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import random
random.seed(1919810)
class MLP(nn.Module):
def __init__(self):
super(MLP, self).__init__()
self.input_layer = nn.Linear(4, 20)
self.hidden = nn.Linear(20, 5)
self.output = nn.Linear(5, 2)
self.loss_fn = nn.CrossEntropyLoss()
def forward(self, x, label):
x = self.input_layer(x)
x = F.elu(x)
x = self.hidden(x)
x = F.elu(x)
x = self.output(x)
loss = self.loss_fn(x, label)
x = F.softmax(x, dim=-1)
predict = x