【问题标题】: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() 函数也会破坏共享。

【问题讨论】:

    标签: machine-learning lua neural-network conv-neural-network torch


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-13
      • 2011-05-05
      • 1970-01-01
      • 2011-02-07
      • 2012-10-05
      • 1970-01-01
      • 2021-11-21
      相关资源
      最近更新 更多