- 博客(17)
- 收藏
- 关注
原创 对VGG16进行迁移学习
替换所有的 ReLU 激活函数为 LeakyReLU# 输出修改后的模型结构VGG(...(1): LeakyReLU(inplace=True) # ReLU 改为 LeakyReLU...(1): LeakyReLU(inplace=True) # ReLU 改为 LeakyReLU...
2024-08-15 09:50:04
333
原创 优化器和将优化器加入CIFAR10神经网络
优化器的作用是在深度学习模型的训练过程中调整模型的参数(权重和偏置),以最小化损失函数(cost function),从而使模型更好地拟合训练数据。在训练的每一步,优化器会执行以下操作:计算梯度:根据当前的模型参数和训练数据,计算损失函数对每个参数的梯度。更新参数:根据梯度和学习率,使用优化算法的规则更新模型的参数。重复:多次重复这个过程,直到模型的损失达到最低或训练达到了预定的迭代次数。
2024-08-14 09:48:50
356
原创 Loss与加入Loss后的CIFAR10神经网络
loss被称为损失函数,用于计算出实际输出和目标之间的差距和为更新输出提供依据(反向传播)反向传播本质是从loss反推优化方案,给卷积核设置了梯度gradient。
2024-08-13 16:23:56
229
原创 CIFAR10神经网络初步搭建
输出高度 = [输入高度 + 2 * padding - dialaction * (kernel_size[0] - 1)] / stride + 1。比如本次CIFAR10的输入RGB图片就是3通道,32 * 32格式,卷积核设置为5 * 5,输出图片为32通道,32 * 32,则带入可得。这是网络上一个的示例模型,先按照这个模型搭建;得到最优解为padding = 2 , stride = 1;首先是Conv2d需要的公式。
2024-08-13 10:29:51
176
原创 线性层/全连接层
作用类似于经典的全连接层(Fully Connected Layer),常用于连接神经网络中的不同层次。主要功能是执行线性变换,也就是对输入数据进行矩阵乘法并添加一个偏置(bias)。:有线性层将输入张量乘以权重矩阵并加上偏置项。如图所受,这种线性变换可以被表示为:也就是每个g都是由与它连线的x乘以相应权重k再加上偏值b。x 是输入张量,通常是二维的,形状为 (N,in_features),其中 N 是批量大小(batch size),in_features 是输入的特征数。
2024-08-11 11:50:15
373
原创 非线性激活
激活函数(Activation Function)是神经网络中的一个关键组成部分,作用是在神经元接收到输入信号后,决定是否将信号传递到下一层神经元。激活函数可以引入非线性,从而使得神经网络能够表示更复杂的函数关系。:输出是输入的线性变换,例如 f(x) = x。线性激活函数无法引入非线性特性,因此,无论网络有多少层,用线性激活函数的网络最终相当于一个单层的线性变换,无法解决复杂的任务。:输出是输入的非线性变换,如 ReLU、Sigmoid、Tanh 等。
2024-08-10 10:12:16
331
原创 最大池化操作
最大池化(Max Pooling)是一种在卷积神经网络(CNN)中常用的操作,主要用于减小特征图的尺寸,从而降低计算量,同时保留最显著的特征。最大池化通过取局部区域内的最大值来减少特征图的空间维度(即宽度和高度),而不改变通道数。在数学上,就是在每次池化核进行匹配时,取出输入数组里面的最大数字,用于存储输入数据特征。从效果上来看,有效地缩小特征图的空间尺寸,减少模型的计算复杂度,同时保留图像的重要特征,实际观感就相当于打了一层马赛克。
2024-08-09 11:30:29
359
原创 对CIFAR-10数据集进行卷积操作
打印的结果里,imgs.shape打印输入图像的形状,通常为[64, 3, 32, 32],即64张3通道的32x32图像。out.shape打印卷积后的输出形状,通常为[64, 6, 30, 30],即64张6通道的30x30特征图。代码中,卷积操作将输入图像从3个通道变成了6个通道,每个卷积核捕捉到图像的不同特征。在卷积神经网络中,input 和 output 的图像看起来不同是正常的,因为卷积操作会改变输入图像的特征,具体表现为图像的颜色、亮度、对比度等方面的变化。
2024-08-09 09:51:01
288
原创 conv2d与卷积操作
卷积操作是从信号处理和图像处理领域引入的数学运算,主要用于提取数据的局部特征。在深度学习中,卷积操作主要用于卷积神经网络(CNN)中,以从图像或其他输入数据中提取特征。通常是二维矩阵,比如一张灰度图像。这个矩阵中的每个元素代表图像的一个像素值。也是一个小的二维矩阵,它用来对输入数据进行滑动窗口操作。卷积核的大小通常比输入数据小得多,比如3x3、5x5等。卷积操作通过将卷积核在输入数据上滑动(即移动),逐个位置地与输入数据进行点积运算,然后将结果求和,生成一个新的值。
2024-08-09 09:08:19
795
原创 DataLoader
在这种情况下,模型在每个 epoch 中遍历整个数据集,以不断调整和优化模型的参数。每个 epoch 结束后,数据通常会被打乱(如果 shuffle=True),然后重新开始遍历数据集。DataLoader 将数据集分成小批次(batch),可以通过设置 batch_size 参数来指定每个批次的大小。例如,如果你设置 batch_size=4,那么 DataLoader 每次会返回 4 个数据样本。可以通过 transform 参数对数据进行预处理或增强,如数据归一化、数据增强等。
2024-08-07 09:59:43
287
原创 Transform和处理图像
顺带一提,OpenCV 读取图像的默认格式是 BGR(蓝、绿、红)格式,而不是更常见的 RGB(红、绿、蓝)格式。读取的图像存储为一个 numpy 数组,其形状是 (height, width, channels),即 (高, 宽, 通道数)。调整图像的大小,以便输入到神经网络中。大多数神经网络需要固定大小的输入图像,因此需要对图像进行调整。经典的 ResNet 模型需要 224x224 的输入图像。并且转换后的tensor将原本的像素值(应该在[0,255]),转换为[0.0 , 1.0]之间。
2024-08-06 10:03:56
303
原创 Tensorboard使用
在TensorBoard中记录一个标量数据。add_scalar函数用于添加一个标量值,这里记录了一个线性关系y = 2x。每次循环都会在日志中记录一次这个标量,i是横坐标,2*i是纵坐标。如果发现生成出来的线图不止一条,且另一条线的末尾用一根奇怪的线过渡到另一个线的起点。那就将logs文件夹里的所有文件清空试一下,这是系统尝试将两个函数合并导致的。,在http://localhost:6009/#scalars里看到自己的图像,后面的--port=6009并不是必须的,但是还是建议少用默认地址。
2024-08-06 09:02:12
178
原创 Dataset
其中的labels指的是与数据样本相关联的目标值或类别,相当于对于数据进行一个分类,比如代码里的0和1,可以指猫和狗,dataset[0]指代的样本labels是0,就可以理解为这是个猫。在 PyTorch 中,Dataset 是一个用于表示数据集的抽象类。它是 torch.utils.data 模块的一部分,提供了一种方便的方式来处理和加载数据。通过继承 Dataset 类并实现上述方法,用户可以方便地创建自定义的数据集,并与其他 PyTorch 组件(如 DataLoader)配合使用。
2024-08-05 09:54:01
340
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人