Pytorch版本代码修正

Pytorch版本代码修正

概述:老版本代码(0.3.0)修正为(0.4.0)

1.UserWarning: nn.init.xavier_uniform is now deprecated in favor of nn.init.xavier_uniform_.init.xavier_uniform(param)

注:init.xavier_uniform 改为 init.xavier_uniform_

2.UserWarning: volatile was removed and now has no effect. Use `with torch.no_grad():` instead. targets = [Variable(anno.cuda(), volatile=True) for anno in targets]

注:im = Variable(im.cuda(),volatile=True)
应该改成im = Variable(im.cuda())

3.UserWarning: invalid index of a 0-dim tensor. This will be an error in PyTorch 0.5. Use tensor.item() to convert a 0-dim tensor to a Python number

注:loss.data[0]
应该改成loss.item()

4.UserWarning: nn.functional.upsample is deprecated. Use nn.functional.interpolate instead.

注:upsample 替换为interpolate

5.UserWarning: size_average and reduce args will be deprecated, please use reduction='sum' instead.warnings.warn(warning.format(ret))

注:size_average=False 改为 reduction='sum’

PyTorch中,计算Bessel函数并不直接内置,但是你可以通过数值积分或者其他方法来近似Bessel K函数。Scipy库的`special`模块提供了对Bessel函数的支持,但是如果你想避免依赖它,可以尝试使用一些基础数学公式或者数值方法如辛普森法则(Simpson's rule)来实现。 首先,你需要了解Bessel K函数的定义和近似公式。对于小的复数x,Kν(x)可以用渐进公式近似: Kν(x) ≈ (π/(2 * x))^(1/2) * exp(-x) 如果你需要更高的精度,可以采用更复杂的算法,比如利用Chebyshev多项式展开。然而,这通常会在代码中变得复杂,并且可能不如专门设计用于处理这类问题的库效率高。 这里是一个基本的示例,展示如何使用数值积分方法(例如辛普森法则)来近似K函数,但这并不是最高效的方式: ```python import torch def approximate_besselk(nu, x): # 辛普森法则的基础版,假设数值x较小,可以直接使用上述公式 if abs(x).item() < 0.1: # 假设这是一个阈值 return (torch.pi / (2 * x)).pow(0.5) * torch.exp(-x) # 使用辛普森法则,实际实现会更为复杂,需要定义区间、步长和积分项等 def integrand(t): return (torch.pi / (2 * t)).pow(0.5) * torch.exp(-t) * (1 + (-1)**nu) # 实际上你需要根据x选择合适的积分区间和步长 integral = integrate.quad(integrand, 0, x.item())[0] # 这里是用的Python自带的quad函数 return integral * (2 ** (1 - nu) / (2 * n)) # 示例 nu = torch.tensor(0.5) x = torch.tensor(1.0) approximation = approximate_besselk(nu, x) print(f"Approximate Bessel K{nu.item()} at x={x.item()}: {approximation}")
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Peanut_范

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值