如何在不更改其参考的情况下将更改应用于张量/向量的元素?

Posted

技术标签:

【中文标题】如何在不更改其参考的情况下将更改应用于张量/向量的元素?【英文标题】:How to apply changes to elements of a tensor/vector without changing its reference? 【发布时间】:2017-07-06 12:05:50 【问题描述】:

我正在共享网络的参数,并希望应用一些操作来更改参数向量的元素。我不能直接对参数张量进行这些操作,因为它们肯定会改变参数向量引用和共享中断。所以 :clone() 共享参数向量并将我想要的更改应用于新向量并使用 :copy() 函数替换原始参数向量中的元素.我认为 tensor:copy() 函数不会更改向量/张量引用,但似乎确实如此,因为参数共享在应用后很快就会崩溃。所以我想知道,任何人都可以修复下面的代码并提出一种在不破坏共享的情况下更改参数向量元素的方法吗?

tempParam = parameters:clone()
Do some operations on the tempParam vector
parameters:copy(tempParam) -- Do the replacement (the copy() function breaks the sharing)

我感兴趣的操作之一是钳位,但如果直接在参数向量上应用,clamp() 函数也会破坏共享。

【问题讨论】:

【参考方案1】:

基本上,您需要一个指向 Tensor 的指针,该指针将修改其原始数据、保留引用和共享。这个链接(Tensor doc)清楚地解释了它。 https://github.com/torch/torch7/blob/master/doc/tensor.md#result-datatensor-asnumber

【讨论】:

以上是关于如何在不更改其参考的情况下将更改应用于张量/向量的元素?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不移动滑块拇指色调的情况下将多种颜色应用于uislider轨道?

在不更改字体的情况下将SVG转换为PNG

我想在不更改其属性的情况下将 xml 元素“产品”重命名为“项目”,但我不知道该怎么做

路由更改时如何在不滚动 Reactjs 的情况下将页面置于顶部

如何在不更改表架构的情况下将查询结果存储在当前表上?

如何在不采用其中更改的情况下将 git 分支声明为合并?