目录
Pytorch 登场
定义:框架,帮我们把矩阵传入到CPU、GPU上
caffe 不更新、无法引入新思想
tensorflow 结果不直观、使用流程僵硬
keras 封装过的tensorflow
cuda+anaconda+pytorch安装
框架
框架最厉害的一件事情就是帮我们把反向传播全部都计算好了,对矩阵进行求导
需要求导的可以手动定义:
x=torch.randn(3,4,requires_grad=true)
autogard机制
返向传播计算
w.grad
线性回归实例
图像数据一般都是np.array的格式
并且为了防止出错我们一般转换成矩阵的格式
x_values=[i for i in range(11)]
x_train = np.array(x_values,dtype=np.float32)
x_train = x_train.reshape(-1,1)
x_train.shape
y_values=[2*i + 1 for i in x_values]
y_train = np.array(y_values,dtype=np.float32)
y_train = y_train.reshape(-1,1)
y_train.shape
import torch
import torch.nn as nn
class linearregresionmodle(nn.Moule):
def __init__(self,input_dim,output_dim):
回归模型loss 真实值和预测值的均方误差
分类模型loss 是交叉熵
Tensor常见的形式
- scalar:通常是一个数值
- vector:向量特征某一维度
- matrix:一般都是矩阵,通常是多维的
卷积网络
堆叠的卷积层
卷积层数设计参数
- 滑动窗口的步长
图像任务步长一般采用1,卷积并不是只能使用在图像处理,也可以使用在文字中,这个就和步长有很大关系 - 卷积核大小
- 边缘填充
不是边界点被利用的次数更多,加上一圈0,充分利用了边界条件
更公平对待边界值 - 卷积核个数
卷积结果计算公式
卷积参数共享
55210
3232*3
池化层
max pooling最大池化
目前maxpooling 比average pooling在大部分情况下效果更好
两次卷积一次池化
七层神经网络,有权重值的才算
注意:转换之后才能接全连接层
经典Alexnet网络
filter太大特征提取不出来
stride也太大
经典VGG网络
网络层数更高
效果号 但是时间很长
为什么vgg16层比30层好,困惑
深度学习瓶颈
新的希望 残差网络 经典Resnet
加上一个同等映射
模型是提取特征值,具体回归和判断是和提取参数和最后一层怎么连接相关
感受野
输入 hwc
c个卷积核得到c个特征值
c(77c)
2c(33c)
堆叠小的卷积核所需要的参数也少一些