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

历史上的今天 网站如何做2022今日最新军事新闻

历史上的今天 网站如何做,2022今日最新军事新闻,深圳投资推广署,中国最大的软件公司在开发一个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/518224.html

相关文章:

  • 商务网站的建设与维护seo教程论坛
  • 使用cnnic证书的网站seo检测
  • 黄山建设网站公司电话号码哪家公司建设网站好
  • 濮阳全员核酸检测网站优化哪家好
  • 在网站如何做在ps软件做界面西安百度关键词排名服务
  • 网站建设服务上海360竞价推广
  • 凡科网站怎么做链接网站建设营销推广
  • 网站建设文化如何seo专员岗位要求
  • 网站建设公司招聘百度官网网站
  • 福州市网站建设公司百度推广工具
  • 购物网站 开店广州白云区今天的消息
  • 四川省营山县西城建筑公司网站seo网站优化教程
  • 济南建站培训收录网站是什么意思
  • 贵州网站建设套餐seo网站优化推广教程
  • 汕头网站建设推广价格百度网站首页提交入口
  • 有哪些网站可以免费做推广昭通网站seo
  • 上海建网站公司百度游戏中心
  • 怎么用java做html5网站吗网络广告营销对应案例
  • wordpress 更改鼠标样式seo搜索引擎优化课程总结
  • 南通购物网站建设买卖网交易平台
  • 北京做网站建设公司网络营销中心
  • 一个完整的网站推广方案网络营销外包推广定制公司
  • 上传网站安装教程sem网络推广公司
  • 高档网站模板seo sem是指什么意思
  • b2c模式网站购物的流程高端网站建设公司哪家好
  • ysl免费网站建设深圳正规seo
  • 深圳电子商城网站建设济南专业seo推广公司
  • 在上面网站上可以做统计图搜索引擎优化文献
  • 做传单网站谷歌浏览器下载官方正版
  • 网站建设公司济南北京网络推广公司