- 博客(50)
- 收藏
- 关注
原创 VAE中的负对数似然损失与自适应容忍度
不直接使用L1损失而采用负对数似然损失是因为考虑到对于纹理,边界这些变化比较剧烈的地方需要更大的容忍度,而不是要求图像完全还原像素。拉普拉斯分布更容忍大误差,避免模型被少数异常像素主导。:在图像生成任务中,某些像素可能存在较大的重建误差(如复杂纹理区域),使用 L1 损失对这些异常值的敏感度更低,模型优化更稳定。拉普拉斯分布对远离均值的值(异常值)的惩罚是线性的(L1),而高斯分布的惩罚是二次的(L2)。尽管拉普拉斯分布是对称的,但其对误差的线性惩罚比高斯分布更能适应实际数据中非均匀的误差分布。
2025-03-06 03:25:48
380
原创 VQ-GAN复现
Decode 和 Encode 参考了stable diffusion的设计,Decode最后一层改成了方差和均值(也就是纯血VAE)特征图通过采样产生,再使用VQ量化特征图。图片最后还是有些胡,感觉是因为有些图像被压缩过,插值成256*256,或者jpeg格式的有损压缩导致了数据有噪声被学会了。最近研究在自编码器,放一个复现的代码,移除了工程相关的代码,只保留了核心,有多卡accelerate就设置为True,没有就关了。
2025-02-26 03:11:09
440
原创 对VQ-VAE中EMA方式更新码本的理解
VQ-VAE采用EMA更新码本的本质是将码本维护转化为在线统计问题隐式中心点计算:通过EMA自动追踪数据分布变化自平衡机制:拉普拉斯平滑确保码本向量机会均等训练稳定性:避免梯度冲突带来的震荡这种设计使VQ-VAE能高效学习到表征能力强大的码本,为后续的生成任务(如VQGAN)奠定了坚实基础。理解这一机制对实现和改进基于离散表征的生成模型具有重要意义。
2025-02-22 18:17:54
723
原创 multiprocessing 引起的Ran out of input错误
上面是会报错的代码,网上说可以把函数放到其他文件下,我试过了,确实可以。但因为我有别的类的代码也是这么写的,却没有报错,所以在找其他解决办法。解决的代码如上,看出区别来了吗,是的,就是函数开头的双下划线。进程的函数不能是私有方法。这里记录我遇到的情况。
2024-08-15 15:10:42
266
原创 阻止子元素捕获鼠标事件
当我们在H5下编写类似拖动组件这样的程序时,如果指针移动速度过快,可能会导致鼠标事件被子元素捕获,从而影响效果,这时我们可以给子元素的样式里添加:pointer-events:none。这样,子元素将不再捕获鼠标事件,从而消除影响。
2024-08-05 11:22:44
262
原创 如何修改HuggingFace库中Accelerator上register_for_checkpointing绑定过的变量
使用accelerator还有很方便的加速并行训练,而register_for_checkpointing,可以帮助我们管理需要在训练过程中保存的变量,可如果在训练过程中发现如初始化设置的epoch等变量还不足以让模型收敛,这时要改动scheduler或者optimizer会发现没法修改或者替换,但我们又舍不得当前训练出来的模型。在之后的代码里不要读取accelerator建立的存档,重新初始化optimizer等变量集合就行。然后在使用accelerator.prepare前加载该模型。
2024-07-01 03:56:33
237
原创 CSV解析
事实证明想简单了,csv里还有这样的规定,如果数据内有双引号(")和逗号(,)那么,数据就要用双引号括起来,而双引号要替换两个双引号。一直以为csv靠逗号(,)分割数据,那么只要用str.spilt(',',row)便可以将数据分割开。比如说数据是: hello,world,那么他在csv里应该表达为:"hello,world"数据是: say "hello",那么他在csv里就应该是"say ""hello"""这样就使得解析的时候没法直接用split函数。(有些字倒,将就看吧)
2024-04-21 02:39:21
295
原创 谈谈Darknet53为啥这么难训练
熟悉YOLO系列的同学应该都知道,Darknet53是YOLOv3的主干网络,本人乘着暑假也在学习YOLO,从1学到了3,基本上都会用代码复现一遍,和作者所说的效果过基本吻合以后再开始新的篇章,直到遇上了Darknet53,按照作者的话说,Darknet53在ImageNet2012上的效果堪比Resnet152,而速度几乎是Resnet的2两倍。关了试一试吧,好,又是两天过去了,这次再val上的Top1 acc到了68,步子迈进了一步,可还是离77.2差了一截,难道是Adam的锅,那换SGDM再来!
2024-03-14 04:08:32
1071
原创 浅谈马尔科夫链蒙特卡罗方法(MCMC)算法的理解
我们把上述的第(2)步改一下,不再用均匀U[0,1]进行采样,而是用U[0,max(p)],而选取的规则变为,如果从均匀分布U[0,max(p)]里取得的值u高于p(x),那么就保留该样本。则有P(A)MIN[1,Q(A->B)/Q(B->A)] = P(B)MIN[1,Q(A->B)/Q(B->A)]即: P(A)Q(A->B)*[P(B)Q(B->A)]=P(B)Q(B->A)*[P(A)Q(A->B)],当然有,那就是等比例缩放平衡方程两边的转移概率,P(A)Q(A->B)=P(B)Q(B->A)。
2024-03-04 04:48:55
1235
原创 浅谈对VAE的理解
上图是自编码器模型(AE)的示意图,想要让一个网络模型生成图片,很自然的可以想到上面的结构,我们利用一个编码器(Encoder)将训练图像压缩成一个向量,再利用解码器(Decoder)将这个压缩出来的向量还原成一幅图片,那么我们就能得到一个生成图片的模型了,显然这也是可以训练的,损失函数可以取原图与生成图之间的均方误差(MSE)好了,条件加完了,训练也进行不下去了,你会发现,编码器和隐含变量之间的联系断开了,编码器构建的是一个概率密度函数,而隐含编码需要的是一个值。至此,我们的新模型就构建好了。
2024-02-29 04:37:52
394
原创 将SVG转为cursor指针样式
其中,_canvas.style.cursor = `url(SVG2Base64(svg)}) 16 16,auto`中的 16 16表示svg图片x,y轴的偏移量。下面是naive-ui推荐的svg库。
2023-10-22 01:58:14
329
原创 vue3中h函数中传入emits的值
注意:方法前面一定要加上小写on,不然绑不上。子组件中声明:update:app方法。父组件中使用h函数动态绑定。
2023-10-10 04:48:25
1041
原创 typescript 动态访问object
type keyType = keyof typeof modalRef.value 不加过不了类型检测。
2023-10-03 00:47:35
98
原创 Vue3 动态创建组件实现数据绑定(h函数)
可以看到typescript里component变成了一个方法,而在html里调用函数来获取is的属性值,这时候代码生效。不知道具体原因,猜测是直接渲染好vnode在利用v-for循环生成会导致vnode不在监听范围内。经常看到框架里使用h函数动态创建组件,可自己使用时发现数据无法绑定,我使用的代码如下。
2023-10-01 00:11:48
2466
原创 [python]opencv提取任意方向的线条
这里有两个思路,一个是设计kernel来提取不同角度的线条,另一个是旋转原始图片来提取不同角度下的垂直或水平线条最后再原回原来的角度。网上看到了利用getStructuringElement以及morphologyEx配合来提取垂直或水平的线条,但由于该方法是利用一个kernel来过滤掉不符和某些形态的像素。4个参数分别是想要提取线条的角度,容忍的误差,灰度图像,提取强度(想要提取的线条保持直线的长度与原始图像宽度的比值,不好理解就是数值越大,提取的线条就越多)
2023-08-30 04:11:10
945
原创 Efficient Graph-Based Image Segmentation【python实现】
Selective Search寻找候选区域的基础,尽管已经用numpy加速过了,但python实现下来效率着实低,用来学习算法,图个乐子。
2023-06-17 01:58:03
228
原创 H5利用drag拖拽元素的时候出现禁止符号
1.将拖拽经过的容器加上处理的dragover和gragenter事件的方法。表示经过的元素允许你要拖拽的元素移动。
2023-06-03 21:47:12
1181
原创 RuntimeError: one of the variables needed for gradient computation has been modified by an inplace
解决方法:将+=改成out = out+y。
2023-05-24 16:28:29
107
原创 Vue3利用vue-plugin-mock实现模拟后台数据
这样一来,你可以在开发过程中模拟 API 请求,而无需实际连接到后端服务器。其中:'path/to/your/mock/files'为接下来建立的存放mock文件的位置,详细配置可以查看官方文档。接下来的步骤(创建 mock 文件以及使用 mock 数据)与之前的解释相同。注:这里url不能写成“api/login”,api前的“/”是必须的,不然访问就是404,在这里卡了半天。这里选择2.9版本,3.0会在mock文件夹下产生大量文件,等待后期完善。这样,你就可以在项目中使用模拟 API 响应了。
2023-04-28 16:07:26
733
原创 Django的Serializer
方法,则执行该方法。此方法通常用于跨字段的验证,例如比较两个密码字段是否相等。属性获取所有字段的错误信息。这有助于确定哪些字段不符合验证要求以及原因。时,它会自动执行序列化器中定义的所有字段验证和自定义验证方法。在Django REST framework中,方法负责执行序列化器的所有验证过程。方法是其中一个自定义验证方法,它被。如果所有字段都通过了验证,,你可以通过访问序列化器的。
2023-04-18 00:37:50
150
原创 Django Rest Framework 解决跨域(CORS)问题
将这些设置添加到项目后,Django REST 框架应用程序现在将接受来自任何主机的请求。要为您的 Django REST 框架应用程序启用 CORS,您可以按照以下步骤操作。或者,您可以在 CORS_ORIGIN_WHITELIST 设置中指定允许的主机列表。5. 重新启动 Django 服务器以使更改生效。
2023-04-16 23:41:46
452
原创 Django分离生产环境和开发环境配置
django的settings.py对于项目部署很重要,需要托管到如git,svn等工具上时希望不上传本地的配置如数据库配置,可以在settings.py同级目录下建立local_settings.py,在该文件下写本地配置。最后在.gitinore里加上local_settings.py文件便可以分离开发与生产环境配置。同时在settings.py末尾加上。
2023-04-15 01:32:06
262
原创 Django项目在宝塔上配置
在你的 Django 项目目录中,运行以下命令来启动 Gunicorn。其中-D表示后台运行, 127.0.0.1:8000为项目监听的端口。(2)检测settings.py中部署服务器的ip或者域名是否正确。前面出现括号加环境名就是进入虚拟环境了,此时可以安装项目依赖。(1)检测settings.py是否配置了静态文件的打包地址。(4) 检测settings.py关闭DEBUG。(3)生成requirements.txt。看到根据前面配置生成的静态文件目录。最后添加上静态目录地址。替换为你的项目名称。
2023-04-15 01:01:22
584
7
原创 在 Django REST framework 中实现 API 认证和授权
要在 Django REST framework 中实现 API 认证和授权,您可以使用内置的身份验证和权限类。步骤 2:安装django-rest-auth django-rest-auth 提供了简单易用的登录、登出、注册等认证功能。默认情况下,您的 API 端点将需要身份验证,因为我们在步骤 4 中配置了。在使用这些端点时,请确保每个需要身份验证的请求都包含了正确的认证令牌。根据您的需要,您还可以在视图层面覆盖默认的身份验证和权限类。的一个分支,支持更新的 Django 版本。
2023-04-13 00:45:04
1139
原创 Django 中创建一个 API
然而,在需要高并发性能、大规模可伸缩性或高级数据库功能的场景中,您可能需要考虑使用其他关系数据库管理系统,如 PostgreSQL、MySQL 或 SQL Server 等。SQLite 是一个轻量级的、嵌入式的数据库引擎,它存储数据在一个本地磁盘文件中,而不是像其他关系数据库管理系统(RDBMS)那样使用一个单独的服务器进程。文件中的数据库配置,那么默认情况下,Django 会使用 SQLite 数据库。文件中配置了一个数据库,但配置错误或数据库服务器无法连接(例如,因为服务器关闭或网络问题),那么。
2023-04-12 23:31:55
891
原创 创建一个新的 Django 应用
步骤 1:安装Python 确保您已经安装了 Python(至少 3.6+)。步骤 2:创建虚拟环境(可选,但推荐) 虚拟环境可以帮助您管理项目的依赖关系。步骤 7:创建一个新的 Django 应用 要创建一个新的 Django 应用,您可以运行以下命令(将。现在,您已经创建了一个新的 Django 项目和应用。接下来,您可以开始构建您的模型、视图和模板。步骤 4:创建Django项目 运行以下命令以在当前目录下创建一个名为。这将启动一个本地开发服务器,默认情况下,您可以在浏览器中访问。
2023-04-12 23:29:03
176
原创 创建一个最新版本的 Laravel 的应用
步骤 1:安装Composer 首先确保您已经安装了 Composer,这是 PHP 的依赖管理工具。确保将 Composer 的全局 bin 目录添加到您的系统 PATH。例如,macOS 和 Linux 的默认目录通常是。步骤 3:创建Laravel项目 现在,您可以使用以下命令在当前目录下创建一个名为。这将创建一个新的 Laravel 项目并自动安装最新版本的依赖项。这将启动一个本地开发服务器,默认情况下,您可以在浏览器中访问。命令创建新的 Laravel 项目。以查看您的新 Laravel 应用。
2023-04-12 23:23:45
212
原创 安装anaconda 后无法激活
注册表打开HKEY_CURRENT_USER\SOFTWARE\Microsoft\Command Processor,在Auto项中修改值,把“if exist &”这三个删除,保存后就可以正常打开cmd了。直接在powershell 中输入cmd 看是否能打开cmd,如果“提示此处不应有&”则可以使用如下方法解决。
2023-01-27 16:00:50
480
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人