DeepLearn 随笔

  1. pprint():美观打印
  2. dict:存储了对象的一些属性,这是一个字典,其键为属性名,值为属性的值
  3. dir():用来寻找一个对象的所有属性,是一个list
  4. getattr(): 函数用于返回一个对象属性值
  5. startswith():方法用于检查字符串是否是以指定子字符串开头,如果是则返回 True,否则返回 False
  6. setattr(object, name, value):函数对应函数 getatt(),用于设置属性值,该属性必须存在
  7. “”“*这里用到了PyTorchNet 里的一个工具: meter,
    meter提供了一些轻量级的工具,用于帮助用户快速统计训练过程中的一些指标。AverageValueMeter能够计算所有数的平均值和标准差,可以用来统计一个epoch中损失的平均值。confusionmeter用来统计分类问题中的分类情况,是一个比准确率更详细的统计指标。以有50张狗的图片,其中有35张被正确分类成了狗,还有15张被误判成猫;共有100张猫的图片,其中有91张被正确判为了猫,剩下9张被误判成狗。相较准确率等统计信息,混淆矩阵更能体现分类的结果,尤其是在样本比例不均衡的情况下。*
    “””
  8. np.newaxis:在指定轴上添加维度,默认在axis=0
  9. 不要随便用.data,推荐用x.detach(), 这个仍旧是共享内存的, 也是使得y的requires_grad为False, 但是,如果x需要求导, 仍旧是可以自动求导的
  10. Python random() 函数:方法返回随机生成的一个实数,它在[0,1)范围内
  11. glob.glob(pathname, *, recursive=False):返回路径下指定的某种格式的文件列表,路径可以是相对也可以是绝对
    glob.glob(r"E:\Picture\*\*.jpg") 绝对路径下的图片文件
    glob.glob(r'../*.py')   相对路径下的某种格式文件
  1. Python replace(): 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次
    str = "this is string example....wow!!! this is really string";
    print str.replace("is", "was");
    print str.replace("is", "was", 3);
    >>
    thwas was string example....wow!!! thwas was really string
    thwas was string example....wow!!! thwas is really string
  1. isinstance() :函数来判断一个对象是否是一个已知的类型,类似 type()。如果要判断两个类型是否相同推荐使用 isinstance()
    >>>a = 2
    >>> isinstance (a,int)
    True
    >>> isinstance (a,str)
    False
  1. assert:个关键词我们称之为“断言”,当这个关键字后边的条件为假的时候,
    程序自动崩溃并抛出AssertionError的异常,后面的程序不执行
  2. call():Python中的函数是一级对象。这意味着Python中的函数的引用可以作为输入传递到其他的函数/方法中,并在其中被执行。 而Python中类的实例(对象)可以被当做函数对待,call()意义就在这里———–实例化的类直接当函数用
    class X(object):
        def __init__(self, a, b, range):
            self.a = a
            self.b = b
            self.range = range
        def __call__(self, a, b):
            self.a = a
            self.b = b
            print('__call__ with ({}, {})'.format(self.a, self.b))
        def __del__(self, a, b, range):
            del self.a
            del self.b
            del self.range
    tance = X(1, 2, 3)
    >>> xInstance(1,2)
    __call__ with (1, 2)
  1. ImageFolder:一个通用的数据加载器,数据集中的数据以以下方式组织
    root/dog/xxx.png
    root/dog/xxy.png
    root/dog/xxz.png

    root/cat/123.png
    root/cat/nsdf3.png
    root/cat/asd932_.png
    dataset.ImageFolder(root="root folder path", [transform, target_transform])

他有以下成员变量:
self.classes - 用一个list保存 类名
self.class_to_idx - 类名对应的 索引
self.imgs - 保存(img-path, class) tuple的list
17. 网络初始化 Xavier

    def weights_init(m):
        if isinstance(m, nn.Conv2d):
            xavier(m.weight.data)
            xavier(m.bias.data)    

18.函数名以_结尾的都是inplace方式, 即会修改调用者自己的数据,在实际应用中需加以区分
不会修改自身的数据,如 a.add(b), 加法的结果会返回一个新的tensor
会修改自身的数据,如 a.add_(b), 加法的结果仍存储在a中,a被修改了
18. 此时读者可能会问,应该什么时候使用nn.Module,什么时候使用nn.functional呢?答案很简单,如果模型有可学习的参数,最好用nn.Module,否则既可以使用nn.functional也可以使用nn.Module,二者在性能上没有太大差异,具体的使用取决于个人的喜好。如激活函数(ReLU、sigmoid、tanh),池化(MaxPool)等层由于没有可学习参数,则可以使用对应的functional函数代替,而对于卷积、全连接等具有可学习参数的网络建议使用nn.Module。下面举例说明,如何在模型中搭配使用nn.Module和nn.functional。另外虽然dropout操作也没有可学习操作,但建议还是使用nn.Dropout而不是nn.functional.dropout,因为dropout在训练和测试两个阶段的行为有所差别,使用nn.Module对象能够通过model.eval操作加以区分
19. 数据增强常用方法:
平移:将图像在一定尺度范围内平移
旋转:…………………角度范围内旋转
缩放:…………………尺度内放大或者缩小
裁剪:在原有图像上裁剪出一块儿
翻转:水平翻转或上下翻转图像
颜色变换: 对图像的RGB颜色空间进行一些变换
噪声扰动:给图像加入一些人工生成的噪声
note:数据增强不能改变图像的原有标签
20. cv2 不支持中文路径
21. numpy 翻转

    a = cp.array([[12,123,23],[12,3,4]])
    print(a[::-1,:]) #两个冒号 在第一个(可指定自己翻转的维度)维度翻转(整体)可理解成倒序
    >>[[ 12   3   4]
         [ 12 123  23]]
  1. numpy.clip(a,a_min,a_max,a=None)
    这个方法会给出一个区间,在区间之外的数字将被剪除到区间的边缘,例如给定一个区 间[0,1],则小于0的将变成0,大于1则变成1
    b = np.array([0,2,4,-3,6])
    b = np.clip(b,1,5)
    print(b)
    >>[1 2 4 1 5]
  1. caffee 图像均值及归化(使用caffe 预训练模型使用)
    mean = np.array([122.7717, 115.9465, 102.9801]).reshape(3, 1, 1) #该参数应该为官方锁定 直接用就行没有深究
    img = (img - mean).astype(np.float32, copy=True)
  1. 特征提取:底层特征、高层语义特征
    底层特征:外观特征、边缘特征、纹理特征、形状特征
    高层语义特征:场景空间关系、几何特征
  2. bath normalization 必须用在激活函数之前 否则效果会大打折扣
  3. 若损失函数的值不断变大,则有可能是步长速率a太大,导致算法不收敛,这时可适当调整a值
  4. dropout的思想继承自bagging方法
  5. resnet
    这里写图片描述这里写图片描述
  6. cap = cv2.VideoCapture(0)
    VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频,如cap = cv2.VideoCapture(“../test.avi”)
    ret,frame = cap.read()
    cap.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。
    cv2.waitKey(1),waitKey()方法本身表示等待键盘输入,
    参数是1,表示延时1ms切换到下一帧图像,对于视频而言;
    参数为0,如cv2.waitKey(0)只显示当前帧图像,相当于视频暂停,;
    参数过大如cv2.waitKey(1000),会因为延时过久而卡顿感觉到卡顿。
    c得到的是键盘输入的ASCII码,esc键对应的ASCII码是27,即当按esc键是if条件句成立
    调用release()释放摄像头,调用destroyAllWindows()关闭所有图像窗口。
import numpy as np
import cv2

cap = cv2.VideoCapture(0) #打开笔记本内置摄像头
while(True):
    # 按帧读取视频 
    ret, frame = cap.read() 
    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  #opencv中默认的颜色空间是BGR

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
  1. LSTM、GRU
    LSTM
    LSTM计算
    GRU
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值