Pytorch-神经网络和数据

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)

时间

金钱和时间都是资源,二者的均衡利用是成功的关键
 时间: 缓急  
          时间按其紧迫性和重要性
           重要性与目标有关
		增加和减少时间
		   减少浪费,
		   必须想办法提高学习/工作效率
		时间观念和时间管理
		  时间记录: 时间去向的可视化
		  时间管理从某种程度来说,是对
		  选择的管理。

数据

 数据和信息

参考

posted @ 2021-09-08 11:48  辰令  阅读(179)  评论(0)    收藏  举报