当前位置: 首页 > news >正文

写对比学习损失函数有感(关于速度差异、出现nan的情况)

出现nan的情况

1、比如 loss = sum(loss[i]) / count,这个时候就要小心分母,如果分母是0的话,loss就会变成nan。

2、使用交叉熵,因为有一个log函数,要注意内部。比如,-log(fenzi / fenmu),首先分母不能为0,第二分子也不能为0(否则log(0)一样会出问题),所以最好对分子分母都加一个很小的值,比如1e-8。

运行速度

使用time.perf_counter()来计时,因为time.time()得到的是以秒为单位的时间,在这里不合适。

1、创建一个 1024*1024 的二维数组:

python列表:158
在这里插入图片描述

torch.zeros:131
在这里插入图片描述

np.zeros:0.38
在这里插入图片描述

torch.zeros(1024, 1024).to(‘cuda’):55839
在这里插入图片描述

结论:如果用torch.zeros创建数组,还往cuda里放的话,速度会非常慢。最好用numpy,快好几个数量级。

2、给 1024*1024 的二维数组遍历赋值:

python自带数组:1800
在这里插入图片描述

torch.tensor.to(‘cuda’):39400
在这里插入图片描述

np.zeros:4700
在这里插入图片描述

结论:在赋值方面np略逊于原生数组,但是没有数量级上的差距。tensor更不用说了,慢死人。

3、给 1024*1024 的二维数组遍历赋值,而且计算余弦相似度:

torch.tensor的数组,以及F.cos的相似度:774
在这里插入图片描述

np的数组,以及np的相似度:686
在这里插入图片描述

我所用的转化一大堆转来转去的相似度:624
在这里插入图片描述

结论:计算相似度的话,几种方法都差不多。而且都不高。最耗时的,还是创建数组的过程。

相关文章:

  • Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day03】——Java高级篇
  • SHRM-人力资源必备的顶流证书
  • 【软件测试】软件测试的相关概念(面试常考)
  • 极光推送厂商通道(小米、华为)对接/问题排查
  • c#开发和学习(基础)
  • java agent简介
  • redis源码实践手册
  • 时间复杂度和空间复杂度❀数据结构
  • Mybatis知识总结二
  • SpringBoot之基础Web开发
  • 作为BAT大厂面试官,谈谈大厂技术面试
  • 半盖半露设计、等大设计——PCB代工厂的常见设计
  • 多线程之三(【多线程案例】单例模式+阻塞式队列+定时器+线程池)
  • PMP每日一练 | 考试不迷路-9.23(包含敏捷+多选)
  • C++ STL学习
  • android 一些 utils
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • golang 发送GET和POST示例
  • JS笔记四:作用域、变量(函数)提升
  • laravel5.5 视图共享数据
  • leetcode-27. Remove Element
  • leetcode46 Permutation 排列组合
  • Linux Process Manage
  • orm2 中文文档 3.1 模型属性
  • select2 取值 遍历 设置默认值
  • STAR法则
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • Vue实战(四)登录/注册页的实现
  • 阿里云Kubernetes容器服务上体验Knative
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 记一次删除Git记录中的大文件的过程
  • 跨域
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 利用jquery编写加法运算验证码
  • 前嗅ForeSpider中数据浏览界面介绍
  • 如何编写一个可升级的智能合约
  • 算法-图和图算法
  • 赢得Docker挑战最佳实践
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • #### go map 底层结构 ####
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $(document).ready(function(){}), $().ready(function(){})和$(function(){})三者区别
  • (11)MATLAB PCA+SVM 人脸识别
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (Note)C++中的继承方式
  • (solr系列:一)使用tomcat部署solr服务
  • (超详细)语音信号处理之特征提取
  • (二)springcloud实战之config配置中心
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转载)(官方)UE4--图像编程----着色器开发