zoukankan      html  css  js  c++  java
  • Pytorch入门随手记

    Pytorch入门随手记

    1. 什么是Pytorch?

      Pytorch是Torch到Python上的移植(Torch原本是用Lua语言编写的)

      是一个动态的过程,数据和图是一起建立的。

    2. tensor.dot(tensor1,tensor2)//tensor各个对应位置相乘再相加

    3. print(net)可以输出网络结构

    4. Pytorch的动态性:网络参数可以有多个不固定的,例如:

      来源:https://morvanzhou.github.io/tutorials/machine-learning/torch/5-01-dynamic/

      最典型的例子就是 RNN, 有时候 RNN 的 time step 不会一样, 或者在 training 和 testing 的时候, batch_sizetime_step 也不一样, 这时, Tensorflow 就头疼了, Tensorflow 的人也头疼了. 哈哈, 如果用一个动态计算图的 Torch, 我们就好理解多了, 写起来也简单多了.

    5. 激活函数使用层和function,在效果上没什么区别

    6. 使用torch.nn.Sequential快速搭建模型

      torch.nn.Sequential(

      ​ #eg

      ​ torch.nn.linear(2,10),

      ​ torch.nn.ReLU(),

      ​ torch.nn.linear(10,2),

      )

    这里使用的是匿名对象,所以print出来之后是没有类型名称(即self.hidden和self.predict之类的,输出的时候会显示hidden和predict).

    1. 保存和提取神经网络

      1. 保存

        torch.save(net,"net.pkl")#保存整个神经网络模型,类型名为pkl

        torch.save(net.state_dict(),"net_params.pkl")#只保存参数而不保存整个网络

      2. 提取

        net=torch.load("net.pkl")#提取网络

        net2=torch.nn.Sequential(

        这里只是举了用Sequential来创建网络的例子,如果不用这种匿名方法的话也是一样的,就是在提取参数之前要搭建一个和原网络完全一样的网络结构

        )

        net2.load_state_dict(torch.load("net_params.pkl"))#只提取参数

    2. 批训练(Mini Batch Training)

      BATCH_SIZE=5
      x=torch.linspace(1,10,10)
      y=torch.linspace(10,1,10)
      torch_dataset=Data.TensorDataset(data_tensor=x,target_tensor=y)
      loader=Data.DataLoader(
      	dataset=torch_dataset,
          batch_size=BATCH_SIZE,
          shuffle=True,#shuffle如果设置为true,则每次batch都是选择的不一样的数据,设置为False,则每次batch的数据都一样。
          num_workers=2,#设置提取数据时候的线程数量
      )
      for epoch in range(3):
          for step,(batch_x,batch_y)in enumerate(loader):#enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
         #例如本例中,那个step就是提取的index
              
      
    3. 超参数:在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。

      由此可见,超参数一般是人为指定的、定义在模型之前的一些全局变量,它对模型和训练的过程进行控制。习惯上,用大写来表示。

    4. 我觉得它第三个for循环和zip合起来还挺灵性的。

    5. len(train_loader)和len(train_loader.dataset)的区别

      这里举个例子:

      train_loader = torch.utils.data.DataLoader(
          dataset=torch_train_dataset,
          batch_size=BATCH_SIZE,
          shuffle=True,
          num_workers=WORKERS) 
      

      len(train_loader.dataset)=len(torch_train_dataset),也就是数据集的大小,和batch_size无关

      len(train_loader)=len(train_loader.dataset)/batch_size并向上取整

  • 相关阅读:
    Org4的約會的Form_Load
    MSCRM 4 Remove 'Add Existing xxxxx to this record' button
    出售剩余时间
    MSCRM中disabled和Disabled屬性的區別
    一些常用的sql
    約會的客戶變更時取其它表的資料
    MSCRM儲存disabled欄位的值
    CRM显示产品图片
    顯示Object的所有屬性及處理ContactId只列出ParentCustomer的資料的javascript
    浅谈递归过程以及递归的优化
  • 原文地址:https://www.cnblogs.com/jiading/p/11964700.html
Copyright © 2011-2022 走看看