- 博客(31)
- 收藏
- 关注
原创 Java的128陷阱:Integer缓存机制
在 Java 开发中,“128 陷阱” 是极易踩坑的经典问题——看似简单的Integer比较,结果却和预期大相径庭。本文从四个维度,彻底拆解这个陷阱的本质,理解Integer的缓存机制。
2026-02-08 20:24:06
976
原创 Java三大集合:List、Set、Map
List、Set、Map 作为最基础也最常用的三种集合类型,各自有着鲜明的特性和适用场景。本文梳理清楚它们的区别、用法和最佳实践,在开发中选对集合、少走弯路。
2026-02-08 20:02:27
1161
原创 三种工厂设计模式
简单工厂模式又称“静态工厂模式”,由一个工厂类根据传入的参数,动态决定创建哪一种产品类的实例。它只有一个工厂类,负责所有产品的创建,产品类需继承自同一个父类或实现同一个接口。为解决简单工厂模式的“开闭原则”问题,工厂方法模式将单一工厂拆分为“工厂接口+具体工厂”:定义一个创建产品的工厂接口,每个具体产品对应一个具体工厂,由具体工厂负责创建对应的产品实例。调用者通过实例化具体工厂,获取对应产品。
2026-02-03 21:46:50
679
原创 深度学习实验十七 优化算法比较
1.各算法的比较2.为什么SGD会走“之字形”?其它算法为什么会比较平滑?因为在此函数中梯度的方向并没有指向最小值的方向,SGD只是单纯的朝着梯度方向,放弃了对梯度准确性的追求,会使得其在 函数的形状非均向(比如y方向变化很大时,x方向变化很小 ),能迂回往复地寻找,效率很低。其他算法因为虽然x轴方向上受到的力非常小,但是一直在同一方向上受力,所以朝同一个方向会有一定的加速。反过来,虽然y轴方向上受到的力很大,但是因为交互地受到正方向和反方向的力,它们会互相抵消,所以y轴方向上的速度不稳定。
2024-12-21 20:16:11
2343
原创 深度学习作业十一 LSTM
LSTM的三个门(输入门、遗忘门、输出门)为每个时间步提供了控制信号,决定了哪些信息需要被保留,哪些信息需要被遗忘,这种机制使得信息可以有效地流动,而不会因为过多的层数或者时间步数而导致梯度消失。它接受当前时间步的输入以及前一时间步的隐藏状态和细胞状态作为输入,并返回当前时间步的隐藏状态和细胞状态。会自动执行所有时间步的计算,并返回整个序列的隐藏状态和细胞状态。它内部实现了时间步的循环,用户只需要一次性传入整个序列的输入,不会自动处理序列的时间步,需要用户在循环中手动传递每个时间步的输入。
2024-12-18 21:40:55
1396
原创 深度学习实验十六 循环神经网络(3)——基于双向LSTM模型完成文本分类任务&&基于双向LSTM和注意力机制的文本分类
这次的实验还是连接远程服务器跑的,感觉这样比较快一点,调参数的时候可以快输出结果,节省很多时间。但是我在上传服务器时,有太多文件了,就上传的很慢。应该还有更好的方法往远程服务器上上传数据集。
2024-12-16 17:58:19
1497
原创 深度学习实验十五 循环神经网络(2)——LSTM的记忆能力试验
=======自定义LSTM算子=====================================================# 声明LSTM和相关参数# 初始化模型参数else:else:else:else:else:else:else:else:else:else:else:else:# 初始化状态向量和隐状态向量# 定义前向计算# inputs: 输入数据,其shape为batch_size x seq_len x input_size。
2024-12-10 21:51:18
1526
原创 深度学习实验十四 循环神经网络(1)——测试简单循环网络的记忆能力和梯度爆炸实验
实验大体步骤:简单循环网络在参数学习时存在长程依赖问题,很难建模长时间间隔(Long Range)的状态之间的依赖关系。为了测试简单循环网络的记忆能力,本节构建一个数字求和任务进行实验。数字求和任务的输入是一串数字,前两个位置的数字为0-9,其余数字随机生成(主要为0),预测目标是输入序列中前两个数字的加和。下图展示了长度为10的数字序列.。
2024-12-09 18:25:02
1259
原创 深度学习作业十 BPTT
可以通过引入门控机制来进一步改进模型,主要有:长短期记忆网络(LSTM)和门控循环单元网络(GRU)。这次的分享就到这里,下次再见~
2024-12-02 21:02:00
615
原创 深度学习实验十三 卷积神经网络(4)——使用预训练resnet18实现CIFAR-10分类
实验大体步骤:注:在自己电脑的CPU跑代码×连接远程服务器跑代码√本次实验由于数据量巨大,我的笔记本上还没有GPU,跑代码一直跑不出来,一直停在如下这个位置不动:于是我想到了连接远程服务器来跑代码。我这里使用的是AutoDL算力云,租个3080的服务器,跑个七八分钟就能出来,而且租一小时才1块多!安利!
2024-12-01 16:53:05
1170
原创 深度学习作业九 RNN-SRN-Seq2Seq
前馈神经网络存在以下缺点:连接在层与层之间,每层节点间无连接。输入和输出的维数固定,不能任意改变。无法处理时序数据。每次输入都是独立的,只依赖于当前的输入因此提出循环神经网络。序列强调数据的时间步或逻辑顺序,具有内在依赖性。序列到序列模型通过编码器解码器结构,学习输入序列到输出序列的映射关系给网络增加记忆能力的三种方法:延时神经网络、有外部输入的非线性自回归模型、循环神经网络。
2024-11-24 20:18:07
1286
原创 深度学习实验十二 卷积神经网络(3)——基于残差网络实现手写体数字识别实验
实验大题步骤:先前说明:上次LeNet实验用到的那个数据集最后的准确率只有92%,但是看学长们的代码和同班同学们的运行结果都是95%+,于是我就尝试换成老师群里的数据集和学长的代码试一试,发现那个数据集运行出来的准确率只有10%。看了看同学的博客,说是换个数据集就可以了。于是我把其替换掉,发现准确率到了95.5%。好用!于是我将其放在这里,需要的同学可以自行下载。好用的数据集:通过网盘分享的文件:mnist.gz。
2024-11-23 21:11:51
2135
原创 深度学习实验十一 卷积神经网络(2)——基于LeNet实现手写体数字识别实验
目录一、数据二、模型构建三、模型训练及评价 四、打印参数量和计算量五、模型预测附:完整可运行代码实验大致步骤:下载网站:MNIST数据集之前的官网不能下载数据集了,403了,所以找到一个类似的网站去下载下载后进行读取、预处理和分隔成训练集、验证集、测试集:运行结果:成功划分数据集加载第一张图片并显示测试结果:代码如下:训练时间对比:运行结果: 注:实验时,出现了一个意外,就是dev上的loss和score不会随着迭代而发生变化。分析好几遍代码也没有找到问题所在。在之前的前馈神经网络中也出
2024-11-17 17:57:39
1434
原创 深度学习实验十 卷积神经网络(1)——卷积运算、卷积算子
自定义的卷积算子# 使用二维卷积算子# 随机构造一个二维输入矩阵[1, 0]]运行结果如下:# 自定义带步长和填充的卷积算子# 使用二维卷积算子# 随机构造一个二维输入矩阵[1, 0]]运行结果如下:# 自定义卷积层算子# 创建卷积核# 创建偏置bias = nn.init.constant(torch.tensor(bias, dtype=torch.float32), val=0.0) # 值可调整# 步长# 填充# 输入通道数# 输出通道数# 基础卷积运算。
2024-11-10 20:15:51
915
原创 深度学习实验九 前馈神经网络(5)——基于前馈神经网络完成鸢尾花分类
由于包含隐藏层和非线性激活函数,它能处理非线性关系,更适合复杂的、非线性可分的数据。用自己的话来说,就是前馈神经网络通过多层的处理来提取特征,而 Softmax 函数则将最终的输出转化为可解释的概率形式。一个隐藏层大小为80,lr=3,迭代2000次的准确率达到了0.93,说明前馈神经网络在复杂的数据集上效果更好。,参数更新路径不稳定,可能导致模型震荡,且难以收敛到全局最优解,而可能停留在局部最优。,尤其是数据集非常大时,每次计算完整数据集的梯度耗时较长,训练速度很慢。计算的梯度是全局的,具有较小的噪声。
2024-11-05 19:10:10
1157
原创 深度学习实验八 前馈神经网络(4)——优化问题
当将偏置初始化为一个较大的负数(如-8)时,经过神经层的处理,最终的输出为复制,再用Relu函数激活,梯度就变成了0,导致了死亡Relu问题。拿双月数据集举例,输入大小为2,一个大小为5的隐藏层,输出大小为1.学习率设置为2.分别用Model_MLP_L2_V5(初始化参数为0)和Model_MLP_L2_V2(随机初始化参数,其均值为0,标准差为1,即高斯分布)和Model_MLP_L2_V6(均匀分布初始化参数)进行训练,观察结果。当所有的权重初始化为0时,前向传播时所有神经元计算出的值将会相同,
2024-11-03 20:29:24
1229
原创 深度学习作业七 基于CNN的XO识别
每一层卷积会聚合前一层卷积提取的模式,这意味着后面的卷积层更多是“复合”前面的特征模式,而非直接映射原图像。去掉池化层后,特征图的尺寸会变得很大,有很多用不到的冗余信息,这意味着在后续卷积层中需要处理更多的数据,从而增加计算量。准确率方面没有特别大的变化,但根据我运行的时间来看,长了很多很多,之前运行时间大概为20s,去掉池化层后大概需要60s。这些特征的差异主要体现在其对图像信息的抽象程度上,越靠后的卷积层提取的特征往往更加抽象和高维,逐渐偏离具体的图像细节。是一个闭包,通过层的名字传递给每个卷积层。
2024-11-03 15:48:18
1384
原创 深度学习作业六 卷积
刚开始尝试利用了Python自带的卷积函数后,发现结果不一样,尝试探究,发现自带的卷积函数会将卷积核进行翻转,所以得到的结果就完全相反。拿一个自己好一点的图为例(老师上课说毛绒动物的最好用了,锐化时可以毛发分明,所以拿一只小猫猫做尝试)按理来说应该就是(3)的转置图、矩阵,但是我的结果却是全0矩阵。二、实现灰度图的边缘检测、锐化、模糊,总结不同卷积核的作用、原理。一、卷积、卷积核、特征图、特征选择、步长、填充、感受野的概念。(1)对图1使用卷积核(-1,1)进行卷积。拿课上老师讲的卷积核为例:(老师的图)
2024-10-25 21:55:03
287
原创 深度学习实验七 前馈神经网络(3)——自动梯度计算
使用torch.nn.Moudle定义一个简单的前馈神经网络,包括输入层和输出层。实现模型的前向传播逻辑。增加一个包含3个神经元的隐藏层,调整前向传播逻辑,确保数据流经过隐藏层。尝试不同的组合,找到最优超参数设置。# 一个隐藏层# 前向计算return a2# 两个隐藏层# 前向计算return a3# 三个隐藏层# 前向计算return a4。
2024-10-24 20:24:11
949
原创 深度学习实验六 前馈神经网络(2)——基于前馈神经网络的二分类任务
本次实验基于前馈神经网络对双月数据集进行分类,后附完整的可运行代码本次实验依旧使用双月数据集,使用“sklearn.datasets”的make_moons函数,将噪声设置成0.1(过大就不是双月了),如下图的噪声为0.5:先定义每一层的算子,然后再通过算子组合构建整个前馈神经网络。假设第l层的输入为第l-1层的神经元活性值,经过一个仿射变换,得到该层神经元的净活性值z,再输入到激活函数得到该层神经元的活性值a.在实践中,为了提高模型的处理效率,通常将N个样本归为一组进行成批地计算。
2024-10-20 17:38:11
1205
原创 深度学习实验五 前馈神经网络(1)——pytorch实现神经元、激活函数
开始依旧是初始化w,x,b,在这里使用torch.nn.Linear()进行计算,依旧是使用sigmoid激活函数进行激活。然后和自己手写的结果进行对比。# 使用torch.nn.Linear()# 输入张量x = torch.tensor([1.0, 2.0, 3.0], dtype=torch.float32).unsqueeze(0) # (1, 3) 的输入# 定义线性层:输入特征数为3,输出特征数为1,并且使用偏置# 手动设置权重和偏置。
2024-10-12 20:52:57
1287
原创 深度学习作业四 BP算法
设置字体为黑体(SimHei),用于显示中文plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体plt.rcParams['axes.unicode_minus'] = False # 解决负号'-'显示为方块的问题# 定义激活函数# 定义激活函数的导数# 定义均方误差# 前向传播# 输入层到隐藏层z1 = np.dot(x, w1) # 输入乘以权重h = sigmoid(z1) # 经过激活函数# 隐藏层到输出层。
2024-10-09 11:16:51
913
原创 深度学习实验四 线性分类
本次实验共有三个问题,但是后两个实验的步骤跟第一个没有太大的区别,所以在这里着重介绍第一个实验(二分类)的步骤,后面会给出详细的代码。
2024-10-07 19:14:12
1353
原创 实验三 基于线性回归的波士顿房价预测
首先计算每个特征的第一四分位数(Q1)和第三四分位数(Q3),然后计算四分位间距(IQR)。使用临界值来替代这些异常值,从而减少它们对模型性能的负面影响。通过数据预处理、模型构建、训练、测试和预测,提升了房价预测的准确性,深入理解了PyTorch在深度学习中的应用。在机器学习和深度学习中,数据预处理是一个至关重要的步骤。良好的数据预处理能够显著提高模型的性能和预测能力。数据预处理的目标是清洗、规范化和准备数据,以便更好地用于模型训练和测试。函数实现,确保了模型能够在未见过的数据上进行有效的泛化。
2024-09-20 20:32:27
2621
2
原创 第十六周复习,第四题查询电费
textView.setText(String.format("%.2f", price) + " 元");第二档:全年总用电量2161~3360(即280×12)度之间部分,电价0.57元/度。// // 处理异常情况,比如用户输入的不是数字。第一档:全年总用电量2160(即180×12)度内,电价0.52元/度。第三档:全年总用电量3361度以上的部分,电价0.82元/度计费。// 获取用户输入的用电度数。模拟电费计算,输入用电量显示电费。
2023-06-11 10:48:11
255
1
原创 第十六周复习,第三题界面跳转,出日期
textView.setText(String.valueOf(year)+"年"+String.valueOf(month)+"月"+String.valueOf(day)+"日");题目:第一个界面选择日期,点击按钮后跳到第二个界面显示出来。在xml界面1的代码中添加。
2023-06-11 10:24:52
94
原创 十六周复习第二题删除文本
builder.setPositiveButton("是", new DialogInterface.OnClickListener() {builder.setNegativeButton("否", new DialogInterface.OnClickListener() {builder.setMessage("是否删除这句话?// 显示 "Hello World!// 添加 "是" 按钮。// 添加 "否" 按钮。// 添加点击事件监听器。选“是”删除文本,选“否”不做改变。
2023-06-11 09:32:40
85
原创 十六周复习第一题,自动发短信
题目1(ActivityAs1.java,activity_as1.xml)运行后自动给13888888888发送短信,内容自定。(添加了一个按钮,点击按钮可以发送短信)
2023-06-11 09:30:57
98
原创 安卓程序设计第十五周
String sql="select * from [四级] where english='"+eng+"'";Log.d("info","线程1:"+String.valueOf(i));Log.d("info","线程2:"+String.valueOf(i));MyItem myItem=new MyItem("汉堡","20",R.drawable.hb);String s="线程1:"+String.valueOf(i);String s="线程2:"+String.valueOf(i);
2023-06-04 10:42:50
223
1
原创 5.28Android Studio
TheItems theItems=new TheItems("汉堡","20",R.drawable.hb);1.MyRecyclerAdapter代码。以上是主要代码,下面是界面模式。4. lv_layout界面。这是5.28上课所讲内容。
2023-05-28 10:24:57
132
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅