zoukankan      html  css  js  c++  java
  • 2.9日学习记录

    1.训练过程的四个内容

     从上面可以看到一个典型的训练过程:处理数据+前向模型+后向传播优化+打印结果

    2. .item()作用

    import torch
    a=torch.tensor([0])
    print(a.item())
    
    输出:
    0

    只针对单个的数

    import torch
    a=torch.tensor([0,1])
    print(a.item())
    
    输出:
    Traceback (most recent call last):
        print(a.item())
    ValueError: only one element tensors can be converted to Python scalars

    3.对model.state_dict()做理解

    https://pytorch.org/tutorials/beginner/saving_loading_models.html

    //发现自己对保存模型还不太理解,就谷歌了一下,直接找到了官方教程,比百度好太多了,搜索一定要用谷歌啊!!能发现很多宝藏。

    5.optimizer.state_dict()

    'optimizer_state_dict': optimizer.state_dict(),#contains buffers and parameters that are updated as the model trains.

    它的状态参数包含缓冲区和模型训练的参数。

     6.super(ConvNet, self).__init__()

    pytorch的网络函数中都会调用这个,作用是什么?

    https://blog.csdn.net/shiheyingzhe/article/details/83051471

    class Model(nn.Module):
        def __init__(self):
            super(Model, self).__init__()
            self.conv1 = nn.Conv2d(1, 20, 5)
            self.conv2 = nn.Conv2d(20, 20, 5)

    其中的super类的作用是继承的时候,调用含super的各个的基类__init__函数,如果不使用super,就不会调用这些类的__init__函数,除非显式声明。而且使用super可以避免基类被重复调用
    使用   print(Model.__mro__)打印搜索顺序或者祖先树,被官方称为MRO即Method Resolution Order,

    用法:

    class C(B):
        def method(self, arg):
            super().method(arg)    # This does the same thing as:
                                   # super(C, self).method(arg)

    使用super子类调用基类的函数,可以实现不访问基类的类名,这样在改变继承关系的时候更加的简洁方便,不用修改子类函数体内容。

    上面是对类中普通函数的例子。

    7.super()继承作用

    class A():
        def __init__(self):
            print('Call class A')
            super(A, self).__init__()
            print('Leave class A')
    class B(A):
        def __init__(self):
            print('Call class B')
            super(B,self).__init__()
            print('Leave class B')
    class C(A):
        def __init__(self):
            print('Call class C')
            super(C,self).__init__()
            print('Leave class C')
    class D(A):
        def __init__(self):
            print('Call class D')
            super(D, self).__init__()
            print('Leave class D')
    class E(B,C,D):
        def __init__(self):
            print('Call class E')
            super(E, self).__init__()
            print('Leave class E')
    sample=E()
    print(E.__mro__)
    
    #输出:
    Call class E
    Call class B
    Call class C
    Call class D
    Call class A
    Leave class A
    Leave class D
    Leave class C
    Leave class B
    Leave class E
    (<class '__main__.E'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.D'>
    , <class '__main__.A'>, <class 'object'>)

    这个我能够理解输出结果,但是它的上一个例子我就不能理解,为什么是这个样子:

    class A():
        def __init__(self):
            print('Call class A')
            print('Leave class A')
    class B(A):
        def __init__(self):
            print('Call class B')
            print('Leave class B')
    class C(A):
        def __init__(self):
            print('Call class C')
            super(C,self).__init__()
            print('Leave class C')
    class D(A):
        def __init__(self):
            print('Call class D')
            super(D, self).__init__()
            print('Leave class D')
    class E(B,C,D):
        def __init__(self):
            print('Call class E')
            B.__init__()
            C.__init__()
            D.__init__()
            print('Leave class E')
    sample=E()
    print(E.__mro__)
    
    #输出
    Call class E
    Call class B
    Leave class B
    Call class C
    Call class D
    Call class A
    Leave class A
    Leave class D
    Leave class C
    Call class D
    Call class A
    Leave class A
    Leave class D
    Leave class E
    (<class '__main__.E'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.D'>, 
    <class '__main__.A'>, <class 'object'>)

    为什么这里D会被调用呢?C和D是兄弟关系。这里还是不明白,保留疑问。。

    反正super就是可以用来调用基函数,保证不重复调用之类的(在多重继承时体现)。

    https://zhuanlan.zhihu.com/p/29763421

    明白了一点,下面是nn.Model的初始化方法,继承它的子类通过super运行这个函数,去给这些属性在父类中统一定义,而不用在子类中再写了。

     

    10.downsample

    https://blog.csdn.net/majinlei121/article/details/46742339

     虽然还是不太理解,但知道了这个是图像中的内容。

  • 相关阅读:
    Redis 安装(Windows)
    etcd简介与应用场景
    Nginx+SignalR+Redis(二)windows
    Nginx+SignalR+Redis(一)windows
    Windows 版MongoDB 复制集Replica Set 配置
    走进异步世界async、await
    认识和使用Task
    进程、应用程序域、线程的相互关系
    ASP.NET Core实现类库项目读取配置文件
    用idea做springboot开发,设置thymeleaf时候,新手容易忽略误区
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/12287967.html
Copyright © 2011-2022 走看看