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

专业做影评的网站百度图片收录提交入口

专业做影评的网站,百度图片收录提交入口,网站品牌建设功能,国家知识产权商标网官方查询在开发一个PyTorch模块时,遇到了一个诡异的现象,将他描述出来就是下面这样: f[..., :p_index - 1] f[..., 1:p_index] 这个操作将f张量的部分数值进行左移,我在模型训练的时候还能正常跑,但是当我将模型部署到项目中…

在开发一个PyTorch模块时,遇到了一个诡异的现象,将他描述出来就是下面这样:

f[..., :p_index - 1] = f[..., 1:p_index]

这个操作将f张量的部分数值进行左移,我在模型训练的时候还能正常跑,但是当我将模型部署到项目中时,这行代码报错了!

Traceback (most recent call last):File "<input>", line 1, in <module>
RuntimeError: unsupported operation: some elements of the input tensor and the written-to tensor refer to a single memory location. Please clone() the tensor before performing the operation.

这个PyTorch报错是因为在执行操作时,输入张量和目标张量共享了同一块内存地址(存在内存重叠),导致PyTorch无法安全地完成原地(in-place)操作。

既然这样的话为什么在模型训练的时候不会这样呢?后面我仔细研究了一下午,发现了下面的原因:


当我们模型在训练阶段中,f的形状通常是(B,F)的形式存在的,而在部署的时候,作推理时数据通常是(1,F)的形式,所以会出现下面的情况:

# 创建高维张量(3维)
f_3d = torch.randn(16, 1, 25)
slice_3d = f_3d[..., 1:24]  # 源切片print("高维张量切片是否连续:")
print(slice_3d.is_contiguous())  # 输出 False# 创建一维张量对比
f_1d = torch.randn(1, 1, 25)
slice_1d = f_1d[..., 1:24]print("\n一维张量切片是否连续:")
print(slice_1d.is_contiguous())  # 输出 True

可以看到,当张量是维度大于1时,其在内存中是非连续存储的,而张量维度为1时,其在内存中是连续存储的。对于非连续张量,PyTorch会在赋值时隐式创建临时副本,避免内存覆盖。因此在进行原地赋值时不会报错。

最后,为了加强代码的鲁棒性,我在所有涉及这部分操作的代码后面加上了clone()函数。

f[..., :p_index - 1] = f[..., 1:p_index].clone()
http://www.dtcms.com/wzjs/524482.html

相关文章:

  • 青浦做网站的公司app推广平台排行榜
  • 林州二建集团建设有限公司网站东莞seo建站咨询
  • 绍兴以往网站招工做公司网站建设方案
  • 邮件网站怎么做2023年新冠疫情最新消息
  • 淘宝做网站推广人电话外贸网站营销推广
  • 服装定制创业计划书长沙电商优化
  • 哪个网站做图找图片游戏搬砖工作室加盟平台
  • 邢台县教育局五库建设网站黑帽seo是什么
  • 做网站用的服务器网络营销策划师
  • 如何高效率的建设网站小程序怎么引流推广
  • 专注合肥网站建设站长数据
  • 京东商城网上购物登录深圳百度seo培训
  • 莆田网站建设开发深圳龙岗区优化防控措施
  • 视频聊天网站建设舆情监控系统
  • 电子科技 深圳 网站建设seo关键字优化软件
  • 做网站和app哪类商标长沙seo就选智优营家
  • 政府门户网站 平安建设武汉百度推广多少钱
  • 德州网站建设的公司网站优化入门
  • 成都网站建设公司南宁seo优化公司
  • WordPress如何分发web开鲁网站seo
  • 前端旅游网站行程怎么做如何提高网站在百度的排名
  • 网站logo更换沈阳百度推广哪家好
  • 购买域名后怎么做网站竞价推广哪里开户
  • wap建站泽成seo网站排名
  • 做的好的淘宝客网站优化公司治理结构
  • 装饰公司营销网站建设唯尚广告联盟
  • 织梦营销型网站模板现在广告行业好做吗
  • 新增网站备案时间深圳居家办公
  • 网站建设常规尺寸免费html网页模板
  • 南山品牌网站建设企业微信scrm系统