【小白做科研(五)】复现代码(下)

本文分享了作者在复现深度学习模型过程中关于数据处理、训练、测试的经验。通过重构数据迭代器,作者体会到代码逻辑并非想象中复杂,并提醒不要盲目崇拜原始代码。使用`tqdm`库进行训练过程的动态显示,利用`torchmetrics`进行模型评估。目前,作者已将模型训练和评测封装为外部函数,并提供了代码仓库链接供读者参考。
摘要由CSDN通过智能技术生成

前言

上次说到了复现模型,欠着训练和评测都没讲,这周把训练评测都搞定了,然后又复现了一篇新的,有一个感触就是深度学习这些模型看着感觉怪吓人,但是代码逻辑不是特别复杂;而且自己写一写这些代码,真的感觉入了门,以及pytorch forum竟然给我发了邮件说把我提升了用户评级(因为我经常看他们博客)hh~

这一篇也主要分享一些看到的好的博客,以及遇到的各种困难, 还有解决的过程。

数据处理

之前搬了微软在TensorFlow平台实现的手写iterator到Pytorch上,心里其实一直有个疙瘩因为没有用pytorch自带的DatasetsDataloader,再加上新复现的模型有一些特别的要求,我想的就索性重构一下原来手写的Iterator,实现过程调用了好几个torchtext的api(因为感觉很帅hh),但是我中间测试了一下发现新写的比原来的慢了5s。。。 具体原因还在探究,心态血崩后觉得以后还是不能盲目崇拜,有时候原始丑陋的代码也是很管用的。

训练

训练过程其实没啥说的,有一个好东西叫做tqdm是python的一个包,可以包装iterator然后动态显示进程。个性化显示数据等等,截张图放下面hh

当涉及到复现diffusion算法的代码时,我需要确一下您指的是哪个具体的diffusion算法。Diffusion算法是一种用于图像处理和计算机视觉任务的图像扩散方法,有多种不同的变体和实现方式。 以下是一个简单的示例,展示了如何使用Python和OpenCV库来实现基于Diffusion的图像去噪算法: ```python import cv2 def diffusion_denoising(image, iterations, kappa, delta): # 将图像转换为灰度图 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 将灰度图转换为浮点型 gray = gray.astype(float) # 迭代应用Diffusion算法 for _ in range(iterations): # 计算梯度 grad_x = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=3) grad_y = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=3) # 计算梯度的平方和 grad_xx = cv2.multiply(grad_x, grad_x) grad_yy = cv2.multiply(grad_y, grad_y) grad_xy = cv2.multiply(grad_x, grad_y) # 应用Diffusion公式 laplacian = cv2.Laplacian(gray, cv2.CV_64F) diffusion = kappa * (grad_xx + grad_yy) - delta * laplacian # 更新图像 gray += diffusion # 将浮点型图像转换为8位灰度图 denoised = cv2.convertScaleAbs(gray) return denoised # 读取图像 image = cv2.imread('input.jpg') # 调用Diffusion去噪函数 denoised_image = diffusion_denoising(image, iterations=10, kappa=0.1, delta=0.2) # 显示原始图像和去噪后的图像 cv2.imshow('Original Image', image) cv2.imshow('Denoised Image', denoised_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 请注意,这只是一个简单的示例,实际的Diffusion算法可能有更复杂的实现方式和参数设置。具体的复现代码可能会因算法的不同而有所变化。如果您有特定的Diffusion算法或代码实现要求,请提供更多详细信息,以便我能够更好地帮助您。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值