深度学习是机器学习的一个子领域,它使用受大脑神经网络的结构和功能启发的算法。
深度学习中使用的神经网络为人工神经网络(ANN)
人工神经网络是一种计算系统,由称为神经元的连接单元的集合组成,这些单元被组织为我们所谓的层。
使用PyTorch进行深度学习
PyTorch是一个深度学习框架和科学计算软件包。
为什么深度学习和神经网络使用gpu
最适合GPU的计算类型是可以并行完成的计算。
**注:**将相对较小的计算任务移动到GPU上不会使我们的速度提高很多,甚至可能会使我们的速度减慢。
张量-深度学习的数据结构
张量是多维数组,简称nd数组。
张量属性:rank,axes,shape
rank:张量中的维数。张量的秩告诉我们需要多少索引来引用张量中的一个特定元素。
一个张量的axes是一个张量的特定维数
e.g:
t = torch.tensor(dd)
t
tensor([
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
])
This torch.Tensor is a rank 2 tensor with a shape of [3,3] or 3 x 3.
卷积神经网络和特征图
卷积神经网络是图像识别任务的首选网络,因为它们非常适合检测空间模式
CNN输入的形状长度通常为4。这意味着我们有一个四个轴的秩-4张量。[Batch, Channels, Height, Width]
有了输出通道,我们不再有颜色通道。
特征图是卷积的输出
神经网络程序设计
step1:数据预处理:目标之一将原始输入数据转换成张量形式
在PyTorch中创建张量的最佳选项:
张量操作类型
1.(1)Reshaping张量只会改变张量的形状,而不会改变其背后的数据。
t.reshape(1, -1),将-1作为第二个参数传递给reshape()函数,-1就是张量中包含的元素的数量
(2)cat()组合张量:
torch.cat((t1, t2), dim=0)按行组合
经典数据集:
MINIST:
Fashion-MNIST(平衡的数据集)
如果每类有不同的数据样本,我们称这个数据集为不平衡的数据集
ELT(Extract ,Transform,Load)
构建CNN
class Network(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5)
self.conv2 = nn.Conv2d(in_channels=6, out_channels=12, kernel_size=5)
self.fc1 = nn.Linear(in_features=12*4*4, out_features=120)
self.fc2 = nn.Linear(in_features=120, out_features=60)
self.out = nn.Linear(in_features=60, out_features=10)
def forward(self, t):
# implement the forward pass
return t
超参数:(是手动或任意选择的参数)
输出通道out_channels(即特征图)由卷积核的个数决定
第一个卷积层的输入通道依赖于构成训练集的图像内部的彩色通道数量
输出层的输出特征out_features依赖于我们训练集中的类的数量
可学习的参数:网络中的权值
对于卷积层,权值存在于过滤器中,在代码中,过滤器实际上就是权值张量本身。
所有的滤波器都用一个张量表示。
过滤器具有用于输入通道的深度。
Tensor Reduction Operations
对张量的约简运算是一种减少张量中包含的元素数量的运算。
PyTorch - torch.eq、torch.ne、torch.gt、torch.lt、torch.ge、torch.le
在整个项目过程中,我们将遵循四个一般步骤:
类和对象
类:一个实际对象的蓝图和描述
对象:事物本身
一个给定类的所有实例都有两个核心组件:方法和属性
方法代表代码,属性代表数据,方法和属性由类定义
属性:描述对象的特征
方法:描述对象的行为
比如:蜥蜴类让我们知道蜥蜴对象有颜色和长度,,但具体值不知道(因为类只描述对象)
在pytorch中构建神经网络
参考链接:https://deeplizard.com/learn/video/6stDhEA0wFQ