- 博客(18)
- 收藏
- 关注
原创 传统与神经网络的参数估计方法
例如,假设我们有一个概率模型,已知数据和模型的形式,我们希望找到使得数据观测值出现的概率最大的参数。这个过程实际上就是在做一个优化问题,目标是最小化(或最大化)损失函数(似然函数)。:在极大似然估计中,我们的目标是通过优化找到最大化似然函数(或对数似然函数)的参数值。似然函数通常表示为一个关于参数的函数,最大化这个函数通常是通过数值优化算法(如梯度下降、牛顿法等)来实现的。这里的优化目标通常是最小化后验的负对数或者最小化负对数似然加上先验的负对数。优化方法,依赖于梯度或海森矩阵的信息。
2024-11-05 14:49:16 173
原创 实例化一个卷积并重复使用带来的好处与问题
在大多数卷积神经网络应用中,为每一层实例化独立的卷积层是至关重要的,以确保不同层能够学习到不同层次的特征。不过,权重共享在某些特定应用场景中有其独特的价值。
2024-10-13 19:32:56 306
原创 digital image processing
该公式中g(x,y)表示灰度线性变换后的灰度值,f(x,y)表示变换前输入图像的灰度值,k和b为线性变换方程f(x,y)的参数,分别表示斜率和截距。当k=1,b=0时,保持原始图像;当k=1,b≠0时,图像所有的灰度值增加或降低(通过调整b,实现对图像亮度的调整);当k=-1,b=255时,原始图像的灰度值反转;当k>1时,输出图像的对比度增强,图像的像素值在变换后全部增大,差异值变大导致整体效果被增强;当0
2024-09-26 17:02:55 572
原创 training strategy
E.g.1. ---gist: leveraging a confidence model to automatically generate a set of reliable training samples (pseudo-labels) for a target domain.1. train a model using training dataset (source domain)2. utilize the result of trained model (input) and the e
2024-09-16 21:18:13 340
原创 余弦退火调整学习率
该方法的优势在于:在训练初期提供较高的学习率,加速模型的学习,防止其陷入局部最小;在训练后期逐渐降低学习率,使模型能够稳定收敛到其找到的全局最小的最优点,并减少过拟合的风险。余弦退火法是一种用于调整神经网络训练过程中学习率的技术。它通过余弦函数来逐渐降低学习率,使得模型在训练后期能够更好地收敛,并减小震荡。:当一个周期结束后,学习率可以继续按上述方式在新周期内进行调整,或保持在。:选择一个初始学习率。
2024-04-30 17:43:43 1877 1
原创 L1、L2损失于图像重建的特性与差别
简而言之,L1损失因线性特性倾向于产生稀疏的误差分布,这在图像重建任务中通常会导致更少的模糊和更锐利的边缘。而L2损失因平方特性倾向于平滑误差,这可能在重建图像时引入更多的模糊。在实际应用中,选择哪种损失函数取决于具体任务的需求,有时甚至会结合使用L1和L2损失来同时利用它们的优势。
2024-02-17 20:43:06 1295 1
原创 使用自已预训练好的模型作为网络的初始化参数
使用自己预训练好的模型作为网络的初始化参数是深度学习中常见的做法,尤其是在迁移学习场景中。这可以通过加载预训练模型的权重到新模型中来实现,前提是新模型的架构能够与预训练模型的权重相匹配。以下是一般步骤和示例代码,展示如何在PyTorch中实现这一过程。
2024-02-14 15:13:49 529 1
原创 梯度裁剪(Gradient Clipping)
梯度裁剪(Gradient Clipping)是一种在训练神经网络时常用的技术,它用于防止梯度爆炸问题。梯度爆炸是指在训练过程中,梯度的大小急剧增加,导致权重更新过大,从而使得模型无法收敛或者性能急剧下降的现象。为了避免这个问题,梯度裁剪通过设定一个阈值来限制梯度的大小。如果梯度超过这个阈值,它们将被缩放至阈值以内,从而避免了大的权重更新。这有助于控制梯度的大小,从而防止训练过程中出现数值问题。另外,如果您想要裁剪梯度的绝对值,而不是范数,可以使用。函数将模型参数的梯度范数限制在。在这个例子中,任何大于。
2024-01-05 15:33:59 5086 1
原创 vutils.save_image()
是 PyTorch 的模块中的一个函数,用于保存张量(tensor)或者一批张量(batch of tensors)为图像文件。该函数对于可视化和保存模型生成的图像特别有用。
2023-12-28 15:48:27 1138 1
原创 深度学习经验
缝合模块:可以自已写一个test检验这个模块(即插即用)有效性,利用torch.randn(N,C,H,W),其中输入即为我们想要插入我们想缝合模块前的模块输入利用print打印出其shape,然后把该模块(即插即用)实例化进行测试,再利用print打印经过该模块后的输出,查看输入输出shape是否一致,可行后即可开始对比试验其模块有效性。
2023-12-24 19:30:24 1932 4
原创 深度学习常用格式及注意
shape:表示图像的尺寸,通常为一个三元组,其中第一个元素是图像的高度,第二个元素是图像的宽度,第三个元素是图像的通道数(对于灰度图像,通道数为1,对于彩色图像,通道数为3)。format:表示图像的格式,通常为一个字符串,表示图像的文件格式,例如,JPEG表示JPEG格式,PNG表示PNG格式。mode:表示图像的模式,通常为一个字符串,表示图像的颜色空间和像素深度,例如,L表示灰度图像,RGB表示彩色图像。ndim:表示图像的维度,对于灰度图像,维度为2,对于彩色图像,维度为3。
2023-12-22 20:54:29 594
原创 C++中,将类放入set/map/unordered_set/unordered_map中要重载运算符,什么时候重载<,是么时候重载==
时,容器是基于哈希表实现的。这些容器不是排序的,而是使用哈希函数和相等性比较来组织元素。如果您想使用自定义比较函数,您也可以提供一个比较类或函数指针作为容器的一部分模板参数。容器中时,容器需要知道如何比较这些对象以维护其内部结构。对象就可以在这两种类型的容器中使用了。来排序其内容,这要求您的类重载。在C++中,当您将类的对象放入。这是一个简单的示例,展示如何为。运算符,并提供了一个特化的。
2023-12-22 11:22:06 480
原创 “ValueError: Sum of input lengths does not equal the length of the input dataset!”
在 PyTorch 中,当你想把一个大的数据集划分为几个小的子集(例如训练集、验证集和测试集)时,你需要确保这些子集的长度之和等于原始数据集的长度。例如,如果你的原始数据集有 1000 个样本,你想划分为训练集和验证集,那么这两个子集的长度之和也必须是 1000。如果你需要从一个大的数据集中划分,确保划分的大小之和等于原始数据集的大小。这个例子中,假设你想要将数据集划分为 80% 训练集,10% 验证集,和 10% 测试集。或类似的函数来划分数据集时,划分的子集总长度与原始数据集的长度不匹配。
2023-12-18 18:05:56 1617 1
原创 如何将python的一个项目包导入到jupyterbook中
将一个 Python 项目包导入到 Jupyter Notebook 中。:确保你的 Python 项目是按照标准的包结构组织的。这通常意味着你的项目目录中应该有一个文件(即使它是空的),以及一个或多个包含你代码的.py文件。:Jupyter Notebook 需要能够找到你的包。如果你的包不在默认的 Python 路径中,你可能需要将其路径添加到sys.path中。这可以在 Jupyter Notebook 中通过 Python 代码完成。
2023-12-17 00:39:48 1483 1
原创 JAVA的多态性
多态性提高了程序的灵活性和可扩展性,并且使得代码能够更加通用。不同的对象收到相同的消息时产生不同的行为方式。(静态多态性): 取决于对象的引用类型。(动态多态性):取决于对象的实际类型。多态性作为OOP的重要特性,它是指。
2023-11-30 16:57:16 51
原创 数字图像处理基本概念
就像在前面的回答中提到的,奈奎斯特采样定律规定了采样频率必须至少是信号中最高频率成分的两倍即fₛ > 2×fₘₐₓ,以避免混叠。然而,在上采样后,如果没有恰当的滤波来去除不必要的高频噪声或伪影,可能会浪费存储空间并引入不必要的信息。图像采样的目标是在数字形式中保留足够的信息,以在后续的处理、显示和存储中保持图像的质量和细节。上采样是指以较高的采样率对已有的信号进行进一步采样,通常通过插值等方法来增加采样数据的数量。下采样是指以较低的采样率对已经采样的信号进行进一步采样,从而减少采样数据的数量。
2023-11-30 11:23:20 181
原创 JAVA的加载顺序
父类静态成员变量/静态成员方法/静态代码块 -> 子类静态成员变量/静态成员方法/静态代码块 -> 父类普通成员变量/成员方法 -> 子类普通成员变量/成员方法 -> 父类构造代码块 -> 子类代码块 -> 父类构造方法 -> 子类构造方法。:实例初始化块提供了一种方式,在不同的构造方法中执行共同的初始化代码,而不需要在每个构造方法中重复相同的代码。当创建类的实例时,加载完实例化后的成员变量和方法后,实例初始化(构造代码)块,这些在每次类的新实例时都会执行。这些在每次创建类的新实例时都会执行。
2023-11-25 21:05:17 392
原创 C++与Java控制访问符及其区别
在Java中,如果没有指定访问修饰符,成员的默认访问级别是包级别(默认修饰符),这意味着成员可以被同一包中的其他类访问。而在C++中,如果没有指定访问修饰符,成员的默认访问级别是私有的,只能在类内部访问。需要注意的是,尽管有一些区别,但Java和C++的访问修饰符的基本概念和作用是相似的。在Java中,访问修饰符可以应用于类本身、类的成员(字段、方法和构造函数)。而在C++中,访问修饰符只能应用于类的成员(字段和成员函数)。通过友元关系,可以允许其他类或函数访问类的私有成员。Java中没有类似的概念。
2023-11-10 13:36:36 74 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人