美文网首页
易错易忘收集

易错易忘收集

作者: 大海一滴写字的地方 | 来源:发表于2018-08-27 16:47 被阅读0次

    Numpy

     axis=0为列方向

     axis=1为行方向

    在axis方向上求(压缩哪一个axis)。。。

    subplot是水平计数(1,2,3,4,5,6)

    b[None,:,None,None]:b本来是一维的,现在可编程4维。

    x: Integer array of shape (N, T) giving indices of words,其中每一个元素均有 0 <= idx < V

    W: Weight matrix of shape (V, D) giving word vectors for all words.

    则W[x]:(N,T,D),x中每一个元素作为W的行索引,得到一个行向量。

    >>> a = np.array([1, 2, 3, 4])

    >>> b = np.array([1, 2])

    >>> np.add.at(a, [0, 1], b)   #array([2, 4, 3, 4])

    verbose=True才打印

    [:,:,None,None]作用是添加维数

    各种相乘:https://blog.csdn.net/zenghaitao0128/article/details/78715140

    不能是tuple

    np.random.randn(10, 10)  

    必须是tuple

    np.zeros((2,3))【为shape】

    可以是tuple,也可以不是

    np.reshape()

    *相当于瓦解tuple

    np.prod: 计算给定axis 的相应向量元素的乘积

     imresize(puppy, (img_size, img_size)).transpose((2, 0, 1)) 对于一幅图片,CNN需要的是C*H*W,而imread是H*W*C,则需要对axis顺序进行转换。

    np.max:(a, axis=None, out=None, keepdims=False)求序列的最值,最少接收一个参数,axis:默认为列向(也即 axis=0),axis = 1 时为行方向的最值;keepdims若为true这保证了输出结果与输入具有相同的dim

    np.maximum:(X, Y, out=None),X 与 Y 逐位比较取其大者;最少接收两个参数

    numpy.where(condition[, xy])。一般使用时,返回的时tuple


    numpy.sum 参数keepdims用于:一般地,当输入时二维的时候,结果是二维的而不是一维的。

    content_array[:,:,:,::-1],content_array有4维,前3维不动,第四维元素顺序颠倒

    np.linalg.norm()各种距离

    np.bincount(np.array([0, 1, 1, 3, 2, 1, 7]))array([1, 3, 1, 1, 0, 0, 0, 1], dtype=int32) # 分别统计0-7分别出现的次数

    X_train_folds = np.array_split(X_train, num_folds)

    np.array_split()&np.split():https://blog.csdn.net/m0_37393514/article/details/79537639

    np.vstack与np.hstack

    plt.scatter([k]*len(accuracies),accuracies),其中[k]重复len(accuracies)次

    np.random.choice(num_training, num_dev,replace=False)

    random.randrange(6)  含义为0-5随机选

    enumerate() 

    遍历dict:for k, v in list(data.items()):

    np.prod()所有元素乘积,同时可以设置axis计算某方向上的乘积

    np.linspace(-0.1, 0.5,5)  5代表有5个,且结果包含左右边界。结果为array([-0.1 , 0.05, 0.2 , 0.35, 0.5 ])

    np.all()  判断所有的元素是否全为true

    np.tolist() 与np.array()是互操作

    np.array(A),对A进行的复制操作,np.asarray()没有复制操作。



    1、range多用作循环,range(0,10)返回一个range对象,如想返回一个list,前面加上list转换;

    2、np.arange是numpy模块中的函数,使用前需要先导入此模块,arange(3):返回array类型对象。

    【注:range()中的步长不能为小数,但是np.arange()中的步长可以为小数

    3、xrange()也是用作循环,只是xrang(0,10)不返回list,返回xrange对象。每次调用返回其中的一个值。 但是好像xrange现在不能使用了。

    返回很大的数的时候或者频繁的需要break时候,xrange性能更好。

    np.random.randint(C,size=(N,))

    scores[np.arange(num_train), y] ,np.arange(num_train)与y均是数组,则选择出scores的第i行第j列的元素(i,j分别为两数组里面的元素)

    /代表浮点数相除,//代表整数相除。

    为dict设置默认值:

    if configis None: config = {}

    config.setdefault('learning_rate',1e-2)

    [0.5] *3代表[0.5,0.5,0.5]

    lambda函数

    f =lambda w: svm_loss_naive(w, X_dev, y_dev,1e2)[0]

    在python3中,5/2=0.25,5//2=2

    a=np.array([[1,2],[3,4]])

    a[0]为 array([1, 2])【第0行】,其实联想一下Java的数组就明白了。

    方法1.用List的成员函数sort进行排序,在本地进行排序,不返回副本

    方法2.用built-in函数sorted进行排序(从2.4开始),返回副本,原始输入不变

    np.clip(255 * img,0.0,255.0).astype(np.uint8)  可对变量的数值范围进行规范。此处还转化为可直接imshow的格式。

    svm中展示权重图片

    w=best_svm.W[:-1,:]

    w=w.reshape((32,32,3,10))

    w_min,w_max=np.min(w),np.max(w)

    classes = ['plane','car','bird','cat','deer','dog','frog','horse','ship','truck']

    for i in range(10):

        plt.subplot(2,5,i+1)

        wimg=255.0*(w[:,:,:,i].squeeze()-w_min)/(w_max - w_min)

        plt.imshow(wimg.astype('uint8'))

        plt.axis('off')

        plt.title(classes[i])


    plt.imshow(visualize_grid(W1,padding=3).asty('uint8')) 上图中,好像首先计算-1为50,然后分别按照50,3,32,32的顺序进行reshape astype('uint8')的结果

    dW = np.zeros_like(W)

    np.zeros((3,2)),里面的()不能去掉

    replace = True 在一次抽取中,抽取的样本可重复出现。 

    即:np.random.choice(6, 2, replace=True) 

    可得,array( [4, 4] ) 

    replace = False 再一次抽取中,抽样的样本不可重复出现。 

    即:np.random.choice(6, 2, replace=True) 

    a.reshape(N,1):返回一个N*1维的ndarray,并不会改变a的大小。

    .resize(shape) : 与.reshape()功能一致,但修改原数组

    exp_sum = np.sum(A,axis=1).reshape(N,1)

    A是一个矩阵,则np.sum(A,axis=1)的结果为一个数组(一行,此处仍然想想数组即可理解),但是我需要列向量,此时就需要reshape(N,1)^_^

    flags=['multi_index']表示对a进行多重索引。op_flags=['readwrite']表示不仅可以对a进行read(读取),还可以write(写入),

    it = np.nditer(x,flags=['multi_index'],op_flags=['readwrite'])

    while not it.finished:

           ix = it.multi_index

            it.iternext()

    则每个ix是一个tuple (),如下图:


    在验证net梯度的正确性时,eval_numerical_gradient对net.params[param_name]进行修改时,是直接在net上的修改,所以lambda的参数没有意义,写任何字母均可。

    for param_namein grads:

        f =lambda WWWW: net.loss(X, y,reg=0.1)[0]

        param_grad_num = eval_numerical_gradient(f, net.params[param_name],verbose=False)

    im.ndim:输出维度

    np.dot(rgb[...,:3], [0.299,0.587,0.144]) 将rgb转化为灰度图像,但是并不理解rgb[...,:3]的意思。


    对于dict:

    bn_param.get('eps',1e-5),若不存在eps,则默认为1e-5

    config.setdefault('learning_rate',1e-2)  设置默认值


    np.logspace(-4,0,20)  代表了1e-4到1e0的等比数列,(包含边界),共20个数。

    tf.nn.conv2(padding='VALID'): 长度为ceil((H-F+1)/S) 

    tf.nn.conv2(padding='SAME'): 长度为ceil(H/S) 

    因此padding需要加入的0的行数计算如下:

    new_height = new_width = ceil(W / S) (结果向上取整)

    在高度上需要pad的像素数为

    pad_needed_height = (new_height – 1)  × S + F - W

    根据上式,输入矩阵上方添加的像素数为

    pad_top = pad_needed_height // 2  (结果取整

    下方添加的像素数为

    pad_down = pad_needed_height - pad_top

    pycharm 软件注意事项

    1. 我将f1设置为运行当前行和运行选中部分了,但是发现一个问题:该文件引用了另外一个文件B,在文件B中修改了程序,再运行调用B程序,发现竟然不能影响f1的运行结果:发现可能因为python console自动对调用函数进行了优化:发现重复导入同一函数,就不再重新导入,而是采用前一版本的函数,因此,修改程序没有改变其结果。解决方法是,每一次点击f1运行前,都要点击下述按钮(重启)。如果点击运行或者调试,则没有该问题。

    RNN

    RNN,词向量,输出,sample关系图

    print

    (1). %字符:标记转换说明符的开始

    (2). 转换标志:-表示左对齐;+表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值若位数不够则用0填充

    (3). 最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。

    (4). 点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将从元组中读出

    (5).字符串格式化转换类型

    转换类型          含义

    d,i                 带符号的十进制整数

    o                   不带符号的八进制

    u                   不带符号的十进制

    x                    不带符号的十六进制(小写)

    X                   不带符号的十六进制(大写)

    e                   科学计数法表示的浮点数(小写)

    E                   科学计数法表示的浮点数(大写)

    f,F                 十进制浮点数

    g                   如果指数大于-4或者小于精度值则和e相同,其他情况和f相同

    G                  如果指数大于-4或者小于精度值则和E相同,其他情况和F相同

    C                  单字符(接受整数或者单字符字符串)

    r                    字符串(使用repr转换任意python对象)

    s                   字符串(使用str转换任意python对象)

    >>> pi =3.141592653  

    >>>print('%10.3f' % pi)#字段宽10,精度3  

    3.142  

    >>>print("pi = %.*f" % (3,pi))#用*从后面的元组中读取字段宽度或精度  

    pi =3.142  

    >>>print('%010.3f' % pi)#用0填充空白  

    000003.142  

    >>>print('%-10.3f' % pi)#左对齐  

    3.142       

    >>>print('%+f' % pi)#显示正负号  

    +3.141593  

    优雅写

    函数参数介绍:

    '''

    :param train_dir: 训练data所在文件夹

    '''

    TODO:

    # TODO: 巴啦啦

    相关文章

      网友评论

          本文标题:易错易忘收集

          本文链接:https://www.haomeiwen.com/subject/imdtwftx.html