Pytorch基本使用

深度学习初识

通过案列:即咱们只传入一些基础的特征,让我们的模型自己去训练,不断的组合一些新的高级的特征,从而去判定最后的结果。这个结果需要我们定义好损失函数之后,不断的去更新里面的参数,使损失函数的值降到最低。当我们来一定新的特征的时候,很方便的去判断最后的结果。

  1. 深度学习介绍
    深度学习是机器学习的一个子领域

    所有的深度学习算法都是深度神经网络

  2. 机器学习和深度学习的区别
    2.1 区别1 :特征提取
    深度学习,没有手工提取到有效特征的步骤

    2.2 区别2:数据量
    深度学习需要大量的训练数据集,会有更高的效果

  3. 深度学习的应用场景
    图像识别
    自然语言处理技术

    没有办法手工提取到有效特征的场景,用深度学习一定是比机器学习效果好得多

  4. 常见的深度学习框架
    TensorFlow 1. 2. keras
    PyTorch

  5. 神经网络的介绍
    模仿生物神经网络的计算模型
    基本单元:神经元

生物的神经元: 有输入,有计算,有输出
人工的神经元: 有输入,有计算,有输出
X W 向量乘法 输出一个数字(即咱们的神经元的输出往往是一个标量)

想要几个输出,搞几个神经元去给我输出
有几个神经元就有几个输出数据

5.1单一一个神经元计算模型的代表:感知机

sign(x1w1 + x2w2 + x3w3 + 1 * w0)
x1w1 + x2w2 + x3w3 + 1 * w0 > 0

x1w1 + x2w2 + x3w3 + 1 * w0 = 0
  1. 多层神经网络
    输入层(Input layer)
    输出层(Output layer)

    隐藏层(Hidden layer)

  2. 激活函数(多层神经网络有效性的保证)

Z = X * W

y = Z * W1
= X * W * W1
y = X * W

线性神经网络的局限性: 多层神经网络跟只有一层神经网络的效果没有区别

sigmoid(x) = 1 / (1 + e^(-x))
sign(x) = 1 (x > 0) -1 ( x<=0 )

f(x): 表示非线性变换

Z = f(X * W)

y = f(Z * W1)
= f(f(X * W) * W1 )

http://playground.tensorflow.org/

为什么要使用简单的激活函数(Relu):

  • Relu 方便求导

  • Sigmoid 在取值很大或者很小的时候,导数非常小,会导致参数的更新速度很慢

    常见的激活函数有:
    sigmoid 只会输出正数,以及靠近0的输出变化率最大
    tanh和sigmoid不同的是,tanh输出可以是负数
    relu在正的输出值的位置导数都是1,但是在负数输出值位置上导数都是0

激活函数的作用:

  • 增加非线性分割能力
  • 增加模型的稳健性(让模型能够拟合不同的数据)
  • 缓解梯度消失
  • 加速模型的收敛

满足函数为线性的条件:

  • f(kx) = kf(x)
  • f(x+v) = f(x) + f(v)

Pytorch

conda创建虚拟环境
conda create -n xxx python=3.6

conda activate xxx

which conda

张量Tensor(ndarray的另外一种叫法)

N阶张量:
重要属性: 形状 数据类型

  1. Pytorch中创建张量
    从已有数据中创建张量
    torch.tensor()
    创建指定的张量
    torch.ones([3,4])
    torch.zeros([3,4])
    torch.empty(3,4)
    创建随机值的张量
    torch.rand([3,4]) # [0, 1)
    torch.randint(low=0,high=10,size=[3,4])
    torch.randn([3,4]) # 标准正态分布
python
import torch
  1. Pytorch中tensor的常用方法
    tensor.shape
    .size() # 查看第几个轴的长度可以把轴的位置丢进去

    取出tensor中唯一的元素,变成常数
    tensor.item()
    tensor.numpy() # 传换成ndarray

改变形状
tensor.view(new_shape) # ndarray.reshape()

转置
tensor.t() # 要求tensor必须是2维的
tensor.transpose(dim0, dim1)

获取阶数
tensor.dim() # ndarray.ndim

索引和切片
tensor和ndarray索引和切片都一样的

常见的统计指标
tensor.max()

查看tensor的数据类型
tensor.dtype
修改tensor的数据类型
tensor.type(new_dtype)
tensor.int() /.double()

  1. CUDA中的tensor
    device = tensor.device(‘cpu’/‘cuda:0’)

    torch.tensor([], device=‘cpu’/‘cuda:0’/device)

    tensor.to(‘cpu’/‘cuda:0’/device)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值