Pytorch数据
阶段
01.使用神经网络进行推理
02.使用神经网络进行训练
03.获取网络的中间数据
04.复现神经网络
05.设计神经网络
【Pytorch】输入数据
输入数据
PyTorch训练管道都以 Dataset 类开始。它负责提供数据样本。任何必要的数据转换和扩充都可
离线预处理所有内容 渐进式学习时,你可以以多种分辨率保存训练数据的,这还是比线上调至目标分辨率更快
PyTorch 使用一个 DataLoader 类来简化用于训练模型的批处理过程
【Pytorch】中间数据
提取网络对数据如数据的特征
提取网络本身的参数
获取模型执行详情
提取网络参数
提取网络对数据如数据的特征
获取神经网络的任意一层的输出
获取神经网络某一层得到的结果作为特征进行处理
大概可以有几种解决方法:
重复写模型,
直接拷贝源码整理成自己的model文件使用-模型不是很复杂的时候;
用hook钩子函数
使用 hook,我们可以提取特征,而不需要重新创建现有模型或以任何方式修改它
1. 定义一个对feature进行处理的函数,比如叫hook_fun
2. 注册hook:告诉模型,我将在哪些层使用hook_fun来处理feature
nn.Module.register_forward_hook
nn.Module.register_backward_hook
重写forward方法
【Pytorch】结果数据
模型给出的结果
Pytorch模型
预训练模型
预训练模型的修改
参数修改
增减卷积层
修改网络中的层次结构,
即自己先定义一个类似的网络,再将预训练中的参数提取到自己的网络中来
自定义模型
【Pytorch】
标准损失函数
torch.nn.MSELoss()
编写自定义损失函数
把训练好的权重加载到自己建立的子网络里面
Pytorch基本概念
data
torch.utils.data.Dataset
torch.utils.data.DataLoader
from torchvision.transforms import ToTensor, Lambda
pre_deal_data
Dataset Dataloader transforms.Compose
requires_grad
Net __init__ forward()
nn.Module nn.Sequential()
transformations
nn.Flatten() nn.ReLU() nn.Linear() nn.Softmax()
nn.Module automatically tracks (weight bias )
model.named_parameters() parameters()
nn.Conv2d nn.MaxPool2d
分层: Data Manipulation Layers :torch.nn.MaxPool2d torch.nn.BatchNorm1d torch.nn.Dropout
cost loss function
loss_fn = nn.CrossEntropyLoss()
loss.backward()
optimzer parameter update
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
optimzer.zero_grad() optimzer.step()
The Train Loop
torch.autograd
model.train()
model.eval()
device = 'cuda' if torch.cuda.is_available() else 'cpu'
save
torch.save()
Feature Attribution Layer Attribution Neuron Attribution
load
1.To load model weights,
01. create an instance of the same model first,
02.and then load the parameters using load_state_dict() method.
model = NeuralNetwork()
model.load_state_dict(torch.load('model.pth'))
2.
can stop tracking computations by surrounding our computation
code with torch.no_grad() block: detach()
with torch.no_grad():
Hyperparameters
Number of Epochs
Batch Size
Learning Rate
torch
img = train_features[0].squeeze()
unsqueeze() method adds a dimension of extent 1. unsqueeze(0) adds it as a new zeroth dimension - now you have a batch of one!
Lambda(lambda y: torch.zeros(10, dtype=torch.float).scatter_(dim=0, index=torch.tensor(y), value=1))
torch.nn
softmax = nn.Softmax(dim=1)
pred_probab = softmax(logits)
<==> pred_probab = nn.Softmax(dim=1)(logits)
时间
金钱和时间都是资源,二者的均衡利用是成功的关键
时间: 缓急
时间按其紧迫性和重要性
重要性与目标有关
增加和减少时间
减少浪费,
必须想办法提高学习/工作效率
时间观念和时间管理
时间记录: 时间去向的可视化
时间管理从某种程度来说,是对
选择的管理。
数据
数据和信息
参考