zoukankan      html  css  js  c++  java
  • 学习中遇到的问题

    • 1.在编写程序的过程中,break没有理解透,也就是自己编写程序很难将break应用在程序中?
    • 2.python 中的numpy在多维数组进行索引时,数字索引和切片索引?
    import numpy as np
    a = np.array([[1,2,3,4], [5,6,7,8], [9,10,11,12]])
    
    #Two ways of accessing the data in the middle row of the array.
    #while using only slices yields an array of the same rank as the
    #original array:
    row_r1 = a[1, :]    # Rank 1 view of the second row of a
    row_r2 = a[1:2, :]  # Rank 2 view of the second row of a
    print(row_r1, row_r1.shape)  # Prints "[5 6 7 8] (4,)"
    print(row_r2, row_r2.shape)  # Prints "[[5 6 7 8]] (1, 4)"
    
    #We can make the same distinction when accessing columns of an array:
    col_r1 = a[:, 1]
    col_r2 = a[:, 1:2]
    print(col_r1, col_r1.shape)  # Prints "[ 2  6 10] (3,)"
    print(col_r2, col_r2.shape)  # Prints "[[ 2]
                                                   #          [ 6]
                                                   #          [10]] (3, 1)"
    
    

    程序中可以得出的是,使用数字索引会使数组的维数降低!

    import numpy as np
    a = np.array([[1,2], [3, 4], [5, 6]])
     #The returned array will have shape (3,) and
    print(a[[0, 1, 2], [0, 1, 0]])  # Prints "[1 4 5]"
     #The above example of integer array indexing is equivalent to this:
    print(np.array([a[0, 0], a[1, 1], a[2, 0]]))  # Prints "[1 4 5]"
    
    • 机器学习的思想:
      利用优化函数来寻找能使损失函数最小的那个参数

    • 凸优化问题(convex )
       涉及到矩阵,训练集,测试集的矩阵运算,以及维度方面的问题
      就是程序的编写问题,也就是数据的预处理问题.

    • 计算梯度
      数值梯度和分析梯度 numerical gradient & analytic gradient

    • java编写程序的输入输出问题.一直不是很懂这个输入的程序代码.

    • 机器学习中归一化的使用.当你确定在输入中不同的输入特征有不同的scales尺度规模.

    • 数据预处理之PCA主成分分析(principal component analysis).
      是一种常用的降维方法
      矩阵的变换,矩阵变换的本质就是将向量进行一系列的拉伸,旋转,变换
      矩阵高维度下变换,变换的方向是由特征向量来决定的.通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么.
      降维,成分分析的目的:舍弃一部分信息,样本的采样密度增大;另一方面,舍弃数据可以起到降噪的效果.
      协方差矩阵(covariance matrix),可以反应数据的相关结构.处理多个维度,多个特征之间的相互关系.

    • 白化(Whitening):PAC白化,就是将PCA变化后的维度,进行标准差归一化处理.
      ZCA白化,在PCA白化的基础上,将坐标维度重新变回原来的坐标(原始的空间数据)

    • 数据处理常见的陷阱(common pitfall): 关于预处理的重要一点是,任何预处理统计(例如数据均值)必须仅在训练数据上计算,然后应用于验证/测试数据。 例如。 计算平均值并从整个数据集中的每个图像中减去它,然后将数据拆分为train / val / test splits将是一个错误.必须仅在训练数据上计算平均值,然后从所有分组(训练/值/测试)中相等地减去平均值。

    • 批量归一化:简单的来说就是在激活层,全连接层,池化层等插入一个BN(batch normalization)

    • numpy的一个知识点:
      np.random.randn()和np.random.rand()的区别
      random.randn()是从一个标准正态样本分布返回样本值.
      random.rand()返回属于[0,1)的随机样本值.

    • 关于机器学习初始化过程的一些好的建议:cs231n-lecture 6 梯度下降和参数优化 可能还是不够熟练,一些建议或者说是定义都没有看懂.

    • 对机器学习训练过程的监视,通常都是用坐标的形式来进行凸显,横x-axis坐标一般都是用epoch.epoch表示在训练的过程中,每个实例被看到的次数.注意,一般情况下都是不会使用iteration迭代次数.因为在迭代次数依赖与批量次数大小的设置.

    • 过拟合的判断:
      训练集和正确率和验证集的正确率差别很大,这就表明了出现了过拟合.一般采取的方法是:regularization,dropout and collect more data.
      如果训练集和验证集的两者之间契合的非常好,这也不是一个好现象,需要采用更大的模型,更多的参数.
      train&val accuracy

    • 学习率的设置learning_rate一般设置在[1e-3 ,1e-5]之间.通过实际的测试检验得来的数据.

    • 梯度优化,也叫梯度下降法.是将目标函数不断减小的策略.
      基本的原理就是利用taylor函数的简化版来实现.$$f(x+Delta x)=f(x)+Delta xigtriangledown f(x)$$
      实现自变量往目标函数减小的方向变化$$x+=Delta x. 其中 Delta x=-gamma igtriangledown f(x)$$

    • 关于CNN的转移学习.就利用已知大量的数据集将卷积神经网络训练好,直接将神经网络中的卷积层,池化层都不变.对于全连接层对新数据集进行重新的训练.

    • **Big question **有一个很大的问题,无论是在numpy 还是pytorch中,矩阵的运算问题.代码中都是没有考虑矩阵的shape,直接运算两个矩阵.这是个内置的运算问题吗?在进行运算时会主动将矩阵进行转置?

    • pytorch 反向传播中,使用grad.zero_()来进行实现循环来保证 权重值的更新.

    • 关于概率论矩估计的一点知识点:((x,y))二维随机变量,(E(X_{k}))称之为(X)的k阶原点矩.(E([X-E(X)]^{2}))称为(X)的k阶中心矩.其实也就是方差(D(X)).协方差(cov(X,Y))(X,Y)的二阶混合中心矩.

    • 深度学习框架的选择:
      PyTorch is my personal favorite. Clean API, dynamic graphs make it very easy to develop and debug. Can build model in PyTorch then export to Caffe2 with ONNX for production / mobile

      TensorFlow is a safe bet for most projects. Not perfect but has huge community, wide usage. Can use same framework for research and production. Probably use a high-level framework. Only choice if you want to run on TPUs.

    不要用狭隘的眼光看待不了解的事物,自己没有涉及到的领域不要急于否定. 每天学习一点,努力过好平凡的生活.
  • 相关阅读:
    adoQuery对象池
    面向對象囈語
    TDataSetProvider 元件的設定
    Midas的三種調用遠程方法的方式
    線程池
    数据库连接池类
    remobject 簡介
    多層開發注重效率的注意點
    修改的一个导出DataSet到xls的单元
    Git 换行符检查 CRLF 与 LF
  • 原文地址:https://www.cnblogs.com/GeekDanny/p/9370712.html
Copyright © 2011-2022 走看看