当前位置:网站首页>NLP自然语言处理(一)
NLP自然语言处理(一)
2022-07-30 02:56:00 【敷衍zgf】
NLP自然语言处理
一、相关概念
1.深度学习的概念
a.机器学习的分支,以神经网络为基础,对数据的特征进行学习。
2.与机器学习的区别
a.深度学习不需要手动的进行特征工程
b.深度学习需要的数量多,需要的计算性能强
3.神经网络
模仿生物的神经系统实现的模型,能够对数据的特征进行学习
4.神经元
a.神经网络中的最小的单元。不同的神经元组合能够得到神经网络
b.结构: t = f(Wx+b)
c.内积:点积,向量的乘法(对应位置相乘相加),得到一个标量。
单层的神经网络:不常见
两层的神经网络: 常见 —感知机
a.感知机:两层神经网络。输入层有多个神经元,输出层一个神经元。
b.感知机的作用:进行一个二分类
多层神经网络:
a.每一层的神经元之间没有连接
b.全连接层:当N层的每一个神经元和前一层的每一个神经元都有链接的时候,第N层就是全连接层。就是在进行矩阵乘法,进行特征的变换,就在进行y=wX+b
5.激活函数
把原来的数据进行变换
a.为什么要使用非线性的激活函数
i.线性的激活函数或者是不是用激活函数,多层神经网络和两层神经网络没有
区别
ii.是用非线性的激活函数能够增加模型的非线性分割能力
b.为什么要使用简单的激活函数(RELU)
i. RELU方便求导
ii. sigmoid在取值很大或很小、很慢
c.激活函数的作用:
i.增加非线性分割能力
ii.增加模型的稳健性(让模型能够拟合不同的数据)
iii.缓解梯度消失
iv.加速模型收敛
6.常见的激活函数
i. sigmoid:(0,1)
ii.tanh:(-1,1)
iii.relu:max(0,x)
iv.ELU:a(e^x-1)
二、Pytorch
与tansorflows是一对,都是深度学习平台
(一)基本元素操作
Tensor(张量),相当于NumPy 的 ndarray数据结构 ,区别在于可以在 GPU 上使用来加速计算。
from __future__ import print_function
import torch
1.创建矩阵操作(没有初始化)
x = torch.empty(5, 3)
print(x)
# 结果
tensor([[1.8646e+25, 8.1836e-43, 1.8646e+25],
[8.1836e-43, 1.8646e+25, 8.1836e-43],
[1.8646e+25, 8.1836e-43, 1.8646e+25],
[8.1836e-43, 1.8646e+25, 8.1836e-43],
[1.8646e+25, 8.1836e-43, 1.8646e+25]])
2.创建矩阵操作(有初始化)
x = torch.rand(5, 3) # 以标准高斯分布的方式赋值,均值为0 方差为1
print(x)
# 结果
tensor([[0.5848, 0.8537, 0.0152],
[0.2734, 0.4674, 0.6391],
[0.4461, 0.0762, 0.8183],
[0.1897, 0.1674, 0.9594],
[0.7556, 0.0022, 0.1531]])
对比有无初始化矩阵:当声明一个未初始化的矩阵时,它本身不包括任何确切的值,当创建一个未初始化的矩阵时,分配给矩阵的内存中有什么数据就赋值给了这个矩阵,本质上是毫无意义的脏数据。
3.创建全0矩阵,并指定数据元素类型为long操作
x = torch.zeros(5, 3, dtype=torch.long)
print(x)
# 结果
tensor([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
4.直接通过数据创建张量
x = torch.tensor([2.5, 3.5])
print(x)
# 结果
tensor([2.5000, 3.5000])
5.通过现有的一个张量创建尺寸相同的新张量
# 利用new_ones方法得到新张量
x = x.new_ones(5, 3, dtype=torch.double) # new_* methods take in sizes
print(x)
# 利用randn_like方法得到尺寸相同x的新张量,并采用随机初始化对其赋值
x = torch.randn_like(x, dtype=torch.float) # 重载 dtype!
print(x) # 结果size一致
6.求张量尺寸
print(x.size())
# 结果
torch.Size(5,3)
torch.Size函数本质上返回的是一个tuple,因此支持一切元组的操作
(二)基本运算操作
1.加法
# 方式(1)
y = torch.rand(5, 3)
print(x + y)
# 方式(2)
print(torch.add(x, y))
# 方式(3)
result = torch.empty(5, 3)
torch.add(x, y, out=result)
print(result)
# 方式(4) in_place原地置换
# adds x to y
y.add_(x)
print(y)
任何一个就地改变张量的操作后面都固定一个 _ 。例如 x.copy_(y), x.t_()将更改x
2.类似于Numpy的方式对张量进行操作
print(x[:, 1])
边栏推荐
猜你喜欢
随机推荐
群论-Burnside引理与Polya定理 三千字
一个塑料瓶的海洋“奇幻漂流”
selenium应用之拉勾简历邀约数据抓取与分析
奥比中光高级副总裁王兆民离职 董事会秘书暂未取得资格证
浏览器缓存机制
Are you still using the command line to read logs?Quickly use Kibana, visual log analysis YYDS
运营人必须掌握的6大类26个基本模型
应用在光伏逆变器中的IGBT晶圆
Excuse me, when datax is synchronized to the oceanbase database, it is written according to the primary key update method. How to fill in the content in the drop-down box?
超详细的MySQL基本操作
解决导航栏变黑色
【服务器存储数据恢复】华为OceanStor某型号存储raid5数据恢复案例
1050 graphics card, why is the graphics card usage ranking on Steam always the top five
Leetcode.234 判断回文链表(双指针/快慢指针)
leetcode每天5题-Day01
共享内存-内存映射-共享文件对象
机器学习1一回归模型(一)
QT基础第三天(3)widget,dialog和mainwindow
重写并自定义依赖的原生的Bean方法
【Flink】从开发到生产上线,如何确定集群规划大小 ?