使用PyTorch进行情侣幸福度测试!情侣慎用!切记!

PyTorch框架中使用早停止Early Stopping(含详细代码) 文章目录1.什么是早停止?为什么使用早停止?2.如何使用早停止?3. Refferences 1.什么是早停止?为什么使用早停止? 早停止(Early Stopping)是 当达到某种或某些条件时,认为模型已经收敛,结束模型训练,保存现有模型的一种手段。 机器学习或深度学习中,有很大一批算法是依靠梯度下降,求来优化模型的。是通过更新参数,让Loss往小的方向走,来优化模型的。可参考BP神经网络推导过程详解 关于模型何时收敛(模型训练好了,性能达到要求了或不能再优化了),此时我们可以采取一些判断标准: 1.验 阅读详情

 

 

 

 

 

DeepConnection模型框架

计算机视觉--图像和视频数据分析是深度学习目前最火的应用领域之一。因此,在学习深度学习的同时尝试运用某些计算机视觉技术做些有趣的事情会很有意思,也会让你发现些令人吃惊的事实。长话短说,我的搭档(Maximiliane Uhlich)和我决定将深度学习应用于浪漫情侣的形象分类上,因为Maximiliane是一位关系研究员和情感治疗师。具体来说,我们想知道我们是否可以准确地判断图像或视频中描绘的情侣是否对他们的关系感到满意?事实证明,我们可以!我们的最终模型(我们称之为DeepConnection)分类准确率接近97%,能够准确地区分幸福与不幸福的情侣。大家可以在我们的论文预览链接 [1] 里阅读完整介绍,上图是我们为这个任务设计的框架草图。

 

 

 

 

 

 

在数据集收集方面,我们使用这个Python脚本 [2] 进行网页数据抽取(webscraping)来获取幸福和不幸福的情侣数据。最后,我们整理出了大约包含1000张图像的训练集。这并不是特别多,所以我们使用数据增强与迁移学习来增强我们模型在数据集上的表现。数据增强--图像方向的微小变化,色调和色彩强度以及许多其他因素都会增强模型的泛化能力,从而避免学习一些不相关信息。例如,如果数据中幸福夫妻的图像平均比不幸福夫妻的图像更亮,我们并不希望我们的模型映射这种关联。我们使用了强大的ImgAug库 [3] 进行了相当多策略的数据扩充,以确保我们模型的鲁棒性。基本上对于每个批次的每个图像,我们都至少应用多种数据增强技术。下图是一张图片应用了48种数据增强策略的示例。

 

 

 

 

图像增强后数据示例

我们决定使用ResNet模型作为DeepConnection的基础网络,在大型数据集ImageNet上预先训练。通过预训练,模型已经具有了一定的识别能力。我们所有的模型都借用PyTorch实现,我们使用Google Colab上的免费GPU资源进行训练和测试。这个基础模型本身已经具备了良好的分类能力,但我们决定更进一步,用空间金字塔池化层(SPP) [4] 替换ResNet-34基础模型的最后一个自适应池模块。这里,处理后的图像数据被分成不同数量的正方形,并且仅传递最大值以进行进一步分析(最大池化)。这使得模型可以专注于重要的特征,使其对不同大小的图像具有鲁棒性,并且不受图像扰动的影响。之后,我们放置了一个均值变换(PMT)层 [5] ,用数学函数转换数据以引入非线性,使得DeepConnection可以从数据中捕获更复杂的关系。这两个模块均提高了我们的分类准确度,我们在单独的验证集上得到了大约97%准确率。SPP / PMT和后续分类层的代码如下所示:

 1class SPP(nn.Module):
 2  def __init__(self):
 3    super(SPP, self).__init__()
 4
 5    ## features incoming from ResNet-34 (after SPP/PMT)
 6    self.lin1 = nn.Linear(2*43520, 100)
 7
 8    self.relu = nn.ReLU()
 9    self.bn1 = nn.BatchNorm1d(100)
10    self.dp1 = nn.Dropout(0.5)
11    self.lin2 = nn.Linear(100, 2)
12
13  def forward(self, x):
14    # SPP
15    x = spatial_pyramid_pool(x, x.shape[0], [x.shape[2], x.shape[3]], [8, 4, 2, 1])
16
17    # PMT
18    x_1 = torch.sign(x)*torch.log(1 + abs(x))
19    x_2 = torch.sign(x)*(torch.log(1 + abs(x)))**2
20    x = torch.cat((x_1, x_2), dim = 1)
21
22    # fully connected classification part
23    x = self.lin1(x)
24    x = self.bn1(self.relu(x))
25
26    #1
27    x1 = self.lin2(self.dp1(x))
28    #2
29    x2 = self.lin2(self.dp1(x))
30    #3
31    x3 = self.lin2(self.dp1(x))
32    #4
33    x4 = self.lin2(self.dp1(x))
34    #5
35    x5 = self.lin2(self.dp1(x))
36    #6
37    x6 = self.lin2(self.dp1(x))
38    #7
39    x7 = self.lin2(self.dp1(x))
40    #8
41    x8 = self.lin2(self.dp1(x))
42
43    x = torch.mean(torch.stack([x1, x2, x3, x4, x5, x6, x7, x8]), dim = 0)
44
45    return x

仔细观察代码可以看出,最终分类层上有八个变种。看似浪费了算力实际上恰恰相反。这个概念是最近提出的,叫做multi-sample dropout(多样本随机丢弃),它在训练期间显着加速了收敛[6] 。它基本上是防止模型学习虚假关系(过度拟合)和试图不丢弃丢失掩码中的信息之间的折衷。

我们在项目中对这个方法进行了其他一些调整优化,具体参看我们在GitHub放出的项目代码 [7]以获取更多信息。简单地提一下:我们使用混合精度(使用Apex库 [8] 实现)训练模型,以大大降低内存使用率,使用早停(earlystopping)来防止过度拟合,并根据余弦函数进行学习率退火。

在达到令人满意的分类准确度(具有相应高的召回率和精确度)后,我们想知道我们是否可以从DeepConnection执行的分类中学到一些东西。因此,我们尝试模型解释性探索并使用梯度加权类激活映射技术(Grad-CAM)进行分析 [9] 。基本地,Grad-CAM获取最终卷积层的输入梯度以确定显著区域,其可以被视为原始图像之上的上采样热图。具体实现与可视化结果如下:

 

 

 

 

热度图对比

 1## from https://github.com/eclique/pytorch-gradcam/blob/master/gradcam.ipynb
 2
 3def GradCAM(img, c, features_fn, classifier_fn):
 4    feats = modulelist_conv(img.cuda().half())
 5    feats = feats.cuda()
 6    _, N, H, W = feats.size()
 7
 8    out = modulelist_fc(feats)
 9    c_score = out[0, c]
10    grads = torch.autograd.grad(c_score, feats)
11    w = grads[0][0].mean(-1).mean(-1)
12
13    sal = torch.matmul(w, feats.view(N, H*W))
14    sal = sal.view(H, W).cpu().detach().numpy()
15    sal = np.maximum(sal, 0)
16
17    return sal

我们在论文中对此进行了进一步讨论,并将其嵌入到了现有的心理学研究中,但DeepConnection似乎主要关注面部区域。从研究的角度来看,这很有意义,因为面部表情会传达沟通和情感。除了Grad-CAM获得的视觉感知之外,我们还想看看我们是否可以通过模型解释得出实际特征。为此,我们创建了激活状态图,以显示最终分类层的哪些神经元被哪些给定图像区域激活。

 

 

 

 

不同幸福程度代表性激活状态图

与其他模型相比,DeepConnection还学习到了代表不幸福的特征,并不仅仅将缺乏代表幸福的特征的分类为不幸福。但是,我们需要进一步的研究才能将这些特征实际映射到人类行为可解释性方面。我们还尝试过在未知的情侣视频帧上使用DeepConnection,效果非常好。

总体而言,该模型的稳健性是其强大优势之一。准确的分类同样适用于 同性恋伴侣 , 不同肤色人种 , 除情侣外包含其他人的视频帧中 , 不能完整显示情侣人脸的视频帧中 等等。对于图像中存在其他人的情况,DeepConnection甚至可以识别其他人是否感到满意,但仍然将其预测集中在这对情侣身上。

除了进一步的模型解释之外,下一步的工作将是使用更大的训练数据集,从而训练更复杂的模型。使用DeepConnection作为情侣治疗师的助手将会很有意思,可以在会话期间或之后对情侣的当前关系状态进行实时反馈。此外,我建议您与女票/男票一起输入你们的合照,看看DeepConnection对你们的关系有何看法!希望这会是一个好的开始!

1: https://psyarxiv.com/df25j/ 2: https://github.com/Bribak/DeepConnection 3: https://github.com/aleju/imgaug 4: https://arxiv.org/abs/1406.4729 5: https://www.sciencedirect.com/science/article/pii/S0031320318304503 6: https://arxiv.org/abs/1905.09788 7: https://github.com/Bribak/DeepConnection 8: https://github.com/NVIDIA/apex 9: https://arxiv.org/abs/1610.02391

 

早停止(Early Stopping)-PyTorch版本(代码使用教程) patience:上次模型在验证集上损失降低之后等待的epoch,此处设置为20。verbose:默认为False,是否显示loss具体下降了多少。counter:用于统计等待了多少个epoch,大于你设置的patience之后,就会停止循环。best_score:记录模型评估的最好loss,用于比较。early_step:默认为False,如果为True,模型就停止循环。:默认为正无穷(np.Inf), 模型评估损失函数的最小值。delta。 阅读详情

相关推荐

情感对话数据集介绍

数据集一、Dailydialogue 该数据集是从英语学习者相关的网站上爬取的对话数据集,主题相对集中,语法相对规范。 总共有一万多个对对话,每个对话大概8轮。 数据集众包含的文件有: 1)dialogues_text.txt:包含所有的一万多个对话,每行代表一对对话,对话之间用_eou_隔开,对话结尾也有一个_eou_。 2)dialogues_topic.txt:每行对应于一对对话所包含的主题,用数字1——10表示,其中1代表日常生活,2代表学校生活,3代表文化和教育,4代表态度和情感,5

weixin_39663060的博客 8437

【Python】Time模块 ValueError: unconverted data remains: UnicodeEncodeError:

Python中与时间和日期相关的常见模块主要有calendar,time和datetime,后两个主要用于时间的计算和处理等,而calendar一般则用于日历获取、显示等方面。 import time import datetime 一、time模块 获取当地时间(localtime(),ctime(),time()) import time import datetime a= time.localtime() b=time.asctime()#time.asctime([tuple])将时间元组转

weixin_44115606的博客 1万+

中文个性情感对话数据集CPED.zip

中文个性情感对话数据集CPED.zip

pytorch使用早停策略

文章目录早停的目的与流程早停策略pytorch使用示例参考网站 早停的目的与流程 目的:防止模型过拟合,由于深度学习模型可以无限迭代下去,因此希望在即将过拟合时、或训练效果微乎其微时停止训练。 流程如下: 将数据集切分为三部分:训练数据(数据量最多),验证数据(数据量最少,一般10%-20%左右即可),测试数据(数据量第二多) 模型通过训练集,得到训练集的LosstrainLoss_{train}Losstrain​ 然后模型通过验证集,此时不是训练,不需要反向传播,得到验证集的LossvalidLo

呆萌的代Ma 7311

两路半桥LLC谐振变换器软开关Simulink仿真(模拟谐振参数不同、分裂电容)

内容概要:本文介绍了“两路半桥LLC谐振变换器软开关Simulink仿真”资源包,重点在于基于Simulink平台对两路半桥LLC谐振变换器进行高精度建模与动态仿真,特别考虑了谐振参数不一致及分裂电容等非理想工况对系统性能的影响。该仿真模型不仅涵盖了主电路拓扑、软开关实现机制与谐振网络设计,还深入分析了不同参数配置下系统的启动特性、稳态效率、动态响应及软开关条件的满足情况。通过参数扫描与对比仿真,帮助用户掌握LLC变换器的关键设计要素与优化方法,具备较强的工程指导价值和科研教学意义。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校师生,以及从事高频开关电源、新能源变换器、车载充电机等领域的研发工程师和技术人员。; 使用场景及目标:① 掌握两路并联半桥LLC谐振变换器的建模与仿真方法;② 理解软开关技术在提升变换器效率与降低EMI方面的关键作用;③ 分析谐振参数偏差与分裂电容结构对系统均流特性、增益曲线及软开关范围的影响;④ 支持科研项目中的拓扑验证、控制策略开发与故障工况分析; 阅读建议:建议结合Simulink仿真模型与配套说明文档进行学习,重点关注谐振腔参数设置、驱动时序设计及软开关波形观测;可通过调整谐振电感、电容值或引入参数失配,观察系统行为变化,深入理解LLC变换器的稳定边界与优化设计原则。

39文章解读与程序——EI\CSCD\北大核心《基于两阶段鲁棒优化算法的微网多电源容量配置》已提供下载资源

电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python,机器学习,计算机视觉,深度学习,神经网络,数据挖掘领域.电网论文源程序擅长文章解读,论文与完整源程序,等方面的知识,电网论文源程序关注python,机器学习,计算机视觉,深度学习,神经网络,数据挖掘领域.《《《《《《《《更多资源还请持续关注本专栏》》》》》》》《《《《《《《《更多资源还请持续关注本专栏》》》》》》》论文与完整源程序_电网论文源程序的博客-优快云博客。电网论文源程序-优快云博客。

LIANG674027206的博客 1209

ValueError: unconverted data remains: 解决方法

运行代码如下所示: len1 = len(input_lines) aa = input_lines[len1-1] print aa tim1 = time.strptime(aa,format)其中输出的aa = 2015-02-20 00:00:00,format = '%Y-%m-%d  %H:%M:%S'.看上去似乎是没有问题的。问题处在哪里呢?1。首先要确...

lwgkzl的博客 7万+

告别手动翻页!用幻影联动+DLL调用,5分钟搞定通达信分时指标自动选股

本文详细介绍了如何利用幻影联动软件结合DLL调用技术,实现通达信分时指标的自动化选股。通过改造指标代码和配置幻影联动任务,用户可以在5分钟内完成从信号检测到自动报警的全流程,大幅提升短周期交易的效率和准确性。

weixin_42561040的博客 771

raise ValueError(“unconverted data remains: %s“ %ValueError: unconverted data remains: 05:00:00

这个错误通常表示你使用的 strptime 格式与传入的日期字符串不匹配,导致解析未能完全成功。在你的例子中,字符串 '2024-09-17T14:59:59+00:00' 包含了时区信息,而你可能只使用了日期和时间部分进行解析。要解决这个问题,你可以使用正确的格式字符串,确保包含所有部分。使用 fromisoformat:这个方法可以直接解析 ISO 8601 格式的日期字符串,包括时区信息。保留时区:生成的 datetime 对象会保留时区信息,方便进行进一步的时间处理。

zhanghaisong_2015的博客 1147

zabbix6.0.4拓扑图链路显示流量

1. 背景介绍 网络流量监控是网络管理员必备功课,以前研究cacti的weathermap插件,网络流量大小和拥塞情况一清二楚,随着cacti的没落,weathermap插件也不能再继续使用,此时就需要学习了解新的替代方案。 经过研究和实际测试,发现zabbix的拓扑图有这个功能。 以下验证了zabbix的拓扑图显示线路流量的功能。 2. Zabbix 6显示拓扑图流量过程 选择监测-拓扑图 点进Local ne...

u013930899的博客 8487

squidpy 教程 1:在 AnnData 和 Squidpy 中导入空间数据

这些是 10x Genomics Visium 的 Space Ranger 输出提供的 keys,因此是第一个被采用的 keys。在这种情况下,我们假设空间坐标与像素具有相同的比例,因此我们将该值设置为 1。为此,我们将使用模拟数据集,并通过示例展示您应该注意的重要细节,以便利用 AnnData-Scanpy-Squidpy 生态系统的全部功能。并不是绝对必要的,但会节省您大量的输入,因为它是 Squidpy 和 Scanpy 的默认值。正如你所看到的,空间坐标被缩小了,图像被“放大”了。

🧑‍🎓 博士研究生在读 🔬 分享生物信息学、神经生物学方面的知识 💬 合作请在后台留言 2256

使用PyTorch进行情侣幸福度测试指南

计算机视觉--图像和视频数据分析是深度学习目前最火的应用领域之一。因此,在学习深度学习的同时尝试运用某些计算机视觉技术做些有趣的事情会很有意思,也会让你发现些令人吃惊的事实。长话短说,我的搭档(Maximiliane Uhlich)和我决定将深度学习应用于浪漫情侣的形象分类上,因为Maximiliane是一位关系研究员和情感治疗师。具体来说,我们想知道我们是否可以准确地判断图像或视频中描绘的情侣...

TensorFlowNews 1373

STM32实现webserver显示数据及配置参数

其实提到的将fsdata.c重命名为fsdata_custom.c,可以不重命令,将/LWIP/Target/lwipopts.h中HTTPD_USE_CUSTOM_FSDATA 定义为0,这样HTTPD_FSDATA_FILE将使用fsdata.c,避免每次生成fsdata.c需要重命令的麻烦。2、登录成功后,板卡根据板卡配置类型,返回对应的数据页面,该页面可实现数据校准、清零,以及进行到板卡参数设置页面。目前还未实现post功能以及http身份验证功能。3、板卡参数设置页面。

2694

Error: unconverted data remains: AM 解决方法

需要的時間格式為: 2015-02-20 00:00:00,format = ‘%Y-%m-%d %H:%M:%S’. 解決方式: 將電腦時間設置為需要的格式即可

weixin_43707560的博客 7655

华为OD机试 - 报文响应时间 - 贪心算法、位运算(Python/JS/C/C++ 2024 E卷 200分)

贪心算法是在每一步选择中都做出当前最优的选择,期望通过局部最优解推导出全局最优解的算法。

学Java,找哪吒 1758

52、切换线性动态系统:原理、挑战与高斯和滤波解决方案

本文介绍了切换线性动态系统(SLDS)的基本原理及其在复杂时间序列建模中的应用。SLDS结合了隐马尔可夫模型的离散状态切换与线性动态系统的连续状态演化,适用于系统动态发生跳跃的场景,如化工过程监测和金融市场分析。由于精确推理在计算上不可行,文章重点阐述了高斯和滤波这一近似方法,通过有限高斯混合来逼近后验分布,并详细描述了其递归更新、权重计算与组件合并流程。同时讨论了性能评估、优化策略及常见问题的解决方案,并展望了SLDS与深度学习、在线学习和多模态融合的未来发展方向。

algae的博客 161

python中的datetime模块·详解

【代码】python中的datetime模块·详解。

u012559269的博客 1188

【Unity 反向运动学插件】Final IK 一套完整的IK解决方案

Final IK是Unity中一套完整的反向运动学解决方案,提供多种IK算法(CCD、FABRIK等)和功能模块,包括全身IK、VR驱动、武器瞄准、视线跟随等。其核心是通过数学方法计算关节旋转,使末端骨骼精确到达目标位置。系统支持多约束求解、旋转限制、动画烘焙及交互系统,采用模块化设计,兼顾性能与扩展性,适用于动作游戏、VR等需要高质量角色控制的场景,是Unity生态中最成熟的IK工具链之一。

2403_88403568的博客 1007

pytorch早停法

作为深度学习训练数据的trick,结合交叉验证法,可以防止模型过早拟合。 早停法是一种被广泛使用的方法,在很多案例上都比正则化的方法要好。是在训练中计算模型在验证集上的表现,当模型在验证集上的表现开始下降的时候,停止训练,这样就能避免继续训练导致过拟合的问题。其主要步骤如下: 1. 将原始的训练数据集划分成训练集和验证集 2. 只在训练集上进行训练,并每隔一个周期计算模型在验证集上的误差 3. 当模型在验证集上(权重的更新低于某个阈值;预测的错误率低于某个阈值;达到一定的迭代次数),则停止训练 4. 使用

qq_43431934的博客 3534

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Pytorch设置早停止early stop

早停止(Early Stopping)是。

XQFFFF的博客 2189

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【PyTorch】单目标检测

介绍了基于残差网络的单对象检测方法在AMD眼底图像中央凹定位中的应用。首先阐述了对象检测的基本概念和边界框表示方法,详细说明了用于AMD检测的Training400数据集特性。通过探索性数据分析展示了数据分布特征。随后构建了包含数据增强、自定义数据集和ResNet架构的完整模型流程,使用平滑L1损失函数和Adam优化器进行训练。实验结果表明,该方法能有效定位中央凹位置,验证集准确率达到较高水平。文中还详细解释了模型训练过程的损失和精度变化曲线,为医学图像分析中的对象检测任务提供了实用参考方案。

Frost_Descent的博客 5939

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

终结模型过拟合:PyTorch早停法实战指南

你是否曾经历过模型训练的困境:训练集准确率不断攀升,测试集性能却开始下滑?这就是典型的过拟合问题。早停法(Early Stopping)作为一种简单有效的正则化技术,能够在模型开始过拟合前自动终止训练,帮你找到最佳平衡点。本文将通过PyTorch实现一个智能早停机制,让你的模型训练更高效、更稳定。 ## 早停法原理与优势 早停法的核心思想是监控模型在验证集上的性能,当性能不再提升时停止训练。这...

gitblog_00972的博客 979
上一篇: 身为一名项目经理,写了个Python脚本,看他们在认真工作还是摸鱼
下一篇: 使用深度学习实现乳腺癌分类,附python演练!每个男同胞的会啊!
普通网友
博客等级 码龄7年 438粉丝 263原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值