添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
  • nn.Module, nn.Functional, forward, num_flat_features, inherit, overwrite
  • 如何用pytorch完成一次正反向传递

  • net.parameters, loss.grad_fn.next_functions[0][0], net.zero_grad
  • criterion = nn.MSELoss(), loss = criterion(output, target)
  • optimizer = optim.SGD(net.parameters(), lr=0.01), optimizer.zero_grad, optimizer.step
  • net.zero_grad() == 效用== optimizer.zero_grad()

  • net.parameters() == 效用== optimizer.param_groups[0]['params']
  • net 与optimizer调取parameters方式不同

  • net.parameters() 生成 generator; 用for in loop调取所有参数
  • optimizer.param_groups 生成list, 然后optimizer.param_groups[0]是dict, 然后optimizer.param_groups[0]['params']调取所有参数
  • lst = list(net.parameters()) 将generator转化为list, 但必须赋值
  • optimizer.step是如何更新参数的

  • p.data.add_(-group['lr'], d_p)
  • 如何调用net.conv1内部的method, attributes

  • net.conv1.weight, net.conv2.bias.grad, net.fc1.zero_grad
  • 构建optim.SGD时到底发生了什么

  • optimizer.param_groups[0].keys()
  • pytorch如何借用THNN计算MSELoss , 核实是否是THNN在工作

  • nn.MSELoss, nn._Loss, nn.module.Module, THNN,
  • pytorch / torch / lib / THNN / generic / MSECriterion.c, THNN_(MSECriterion_updateOutput)
  • 自己的模型Net从nn.Module继承了什么

  • `super(Net, self).__init__()`, 在运行super class init中,同时继承了所有的methods
  • Net overwrite `init(), forward()` write a new func `num_flat_features()` for itself
  • nn.Module里面的dir与repr函数

  • self._modules.keys(), self.__dict__.keys()
  • lst = list(self._buffers.keys()), sorted(keys)
  • nn.Conv2d里面构建了什么

  • nn.Conv2d -> nn._ConvND -> nn.Module
  • nn._ConvND: init, reset_parameters
  • F.Conv2d里面发生了什么?

  • ConvNd = torch._C._functions.ConvNd
  • self.conv1(x) 先运行__getattr__再运行__call__

    如何安装gdb从而能一路debug from python to C/C++

  • C/C++ gdb 问题基本解决 部分解决
  • gdb python 有待解决 no module libpython 似乎解决了
  • 剩下can't read symbols 的warning 没有真正解决
  • nn.MSELoss的解析01

  • MSELoss -> _Loss -> Module
  • 包含init, forward, pre_forward_hooks, forward_hooks, backward_hooks
  • nn.MSELoss的解析02

  • _functions.thnn.MSELoss.apply(input, target, size_average) 调用torch._C 中的用于计算mseloss函数
  • ctx == _ContextMethodMixin, 至于是如何调用的,不清楚过程
  • 尝试理解这种方法的广泛性
  • optim.SGD的解析

  • __init__: 将params, defaults(包含超参数dict)重新打包到self.param_groups里面
  • 方便zero_grad和step 使用
  • 全流程梳理pytorch普通建模 代码

  • part1 part2 part3 part4 part5 part6 part7 part8 part9
  • backend1 : 从pytorch ConvNd 到Torch.csrc.autograd.functions....ConvForward
  • 从pytorch.relu通过backend到torch.Threshold
  • 从pytorch.maxpool2d_通过backend_到torch.C.spatialDilatedMaxPooling
  • 从pytorch.MSELoss_通过backend_到Torch.mseloss
  • 全流程梳理pytorch 多分类建模 代码

  • part1 , part2 , part3
  • 二元分类问题的Loss设定的注意事项: 代码3

  • 如果用BCEWithLogitsLoss
  • features, targets的type 要统一为torch.FloatTensor
  • targets的size要规范为(-1,1)
  • 如果用CrossEntryLoss
  • targets的type一定要是torch.LongTensor
  • 摸索过程:真实发现错误和寻找解决方案的过程
  • part1 , part2 , part3
  • 探索keras内部 冗长解读

  • 查看keras内部主要的modules 0:00-7:50
  • keras.models.Sequential内部结构 --13:38
  • keras.legacy.interfaces...wrapper 让keras1与keras2互通 -- 15:36
  • keras.models.add --22.10
  • 为什么pytorch对beginner更友好 解读

  • 更容易一层一层debug, 这个视频证明用debug方式阅读keras代码很难
  • 用pytorch构建自己的数据class 代码文档 part1 , part2 , part3 , part4 , 总结版

  • 存储自己的数据,transform,batch,shuffle
  • 如何使用Variable.backward?

    y.backward()
    y.backward(torch.FloatTensor(x.size())
                            

    如何展示处理中间层的输入和输出值

    net.conv2.register_forward_hook(printnorm)
    net.conv2.register_backward_hook(printgradnorm)
                            

    如何查看某一层的parameters 代码文档

    conv2_param_list = list(self.parameters()) # self: conv2
    conv2_param_list.__len__() # 2
    conv2_param_list[0].size() 
                            

    transfer_learning_tutorial

    如何叠加多个图片transformation 代码文档

    data_transforms = {
        'train': transforms.Compose([
            transforms.RandomSizedCrop(224),
            transforms.RandomHorizontalFlip(),
            transforms.ToTensor(),
            transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
        'val': transforms.Compose([
            transforms.Scale(256),
            transforms.CenterCrop(224),
            transforms.ToTensor(),
            transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
                            

    ImageFolder如何将图片folder转化成模型数据格式

    data_dir = '/Users/Natsume/Desktop/data/hymenoptera_data'
    image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
                                              data_transforms[x])
                      for x in ['train', 'val']}
                            

    如何将变量信息注入到时间序列的颜色中

    ax1 = plt.subplot2grid((2, 1), (0, 0), colspan=1, rowspan=1)
    ax1.set_title("original close price with mv_avg_volume window %d" %vol_window)
    # plot predictions(pct) as color into prices
    for start, stop, col in zip(xy[:-1], xy[1:], color_data):
        x, y = zip(start, stop)
        ax1.plot(x, y, color=uniqueish_color3(col))
                            

    如何使用dataloader来做批量和随机

    dataloders = {x: torch.utils.data.DataLoader(
                 image_datasets[x], batch_size=4, shuffle=True, num_workers=4)
                                                 for x in ['train', 'val']}
                            

    给一个小批量图做plotting

    def imshow(inp, title=None):
        """Imshow for Tensor."""
        inp = inp.numpy().transpose((1, 2, 0))
        mean = np.array([0.485, 0.456, 0.406])
        std = np.array([0.229, 0.224, 0.225])
        inp = std * inp + mean
        plt.imshow(inp)
        if title is not None:
            plt.title(title)
        plt.pause(0.001)  # pause a bit so that plots are updated
    inputs, classes = next(iter(dataloders['train']))
    out = torchvision.utils.make_grid(inputs)
    imshow(out, title=[class_names[x] for x in classes])
                            

    直接调用著名模型及其参数来用

    model_ft = models.resnet18(pretrained=True)
                            

    调用的著名模型内部构造

    model_ft = models.resnet18(pretrained=True)
                            

    量身修改训练好的高级模型

    model_ft.fc = nn.Linear(num_ftrs, 2)
                            

    调试优化算法的LR的用途用法结构

    exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=7, gamma=0.1)
                            

    train_model定制训练函数的结构

    for epoch in range(num_epochs):
        for phase in ['train', 'val']:
            for data in dataloders[phase]:
    # -0.26s val
                            

    scheduler.step和model.train用法

    def step(self, epoch=None):
        if epoch is None:
            epoch = self.last_epoch + 1
        self.last_epoch = epoch
        for param_group, lr in zip(self.optimizer.param_groups, self.get_lr()):
            param_group['lr'] = lr
    def get_lr(self):
            return [base_lr * self.gamma ** (self.last_epoch // self.step_size)
                    for base_lr in self.base_lrs]
    def train(self, mode=True):
            """Sets the module in training mode.
            This has any effect only on modules such as Dropout or BatchNorm.
            self.training = mode
            for module in self.children():
                module.train(mode)
            return self
                            

    借用的高级模型的大部分参数如何保持不变

    # 阻止计算参数的gradients
    param.requires_grad = False
                            

    训练完成后画一个批量的图

    for j in range(inputs.size()[0]):
        images_so_far += 1
        ax = plt.subplot(num_images//2, 2, images_so_far)
        ax.axis('off')
        ax.set_title('predicted: {}'.format(class_names[preds[j]]))
        imshow(inputs.cpu().data[j])
                            

    如何构建自己的dataset class

    from torch.utils.data import TensorDataset, DataLoader
    train_dataset = TensorDataset(train_features.data, train_targets.data)
    train_loader = DataLoader(train_dataset, batch_size=64,
                            shuffle=True, num_workers=1)
                            

    YunJey | pytorch-tutorial

    让pytorch使用tensorboard 代码文档

    让pytorch使用tensorboard
    1. torchvision.datasets.MNIST()
    1. iter(data_loader): 构建iterator
    2. tensor.view == np.reshape
    3. argmax.squeeze() 去除(n, m, 1)中的1
    4. tensor.float(): 改变type
    5. logger: 
    	plot curves: loss, acc are scalar; 
    	plot histogram: params, grads, np.array;
    	plot images: from tensor to (m, h, w)
                            

    AI-challenger stock

  • 数据处理准备 代码文档 冗长解读
  • 模型1:训练代码流程 Training代码 冗长解读
  • 模型2:Predict代码 解读
  • 分类:
    人工智能
  • GitLqr
    19小时前
  •