Tensor 내에서 단일 값 조정 — TensorFlow
이 질문이 부끄럽지만 텐서 내에서 단일 값을 어떻게 조정합니까? 텐서 내의 하나의 값에만 '1'을 더하고 싶다고 가정 해 보겠습니다.
인덱싱으로 수행하면 작동하지 않습니다.
TypeError: 'Tensor' object does not support item assignment
한 가지 접근 방식은 동일한 모양의 0의 텐서를 만드는 것입니다. 그런 다음 원하는 위치에서 1을 조정합니다. 그런 다음 두 개의 텐서를 더합니다. 다시 이것은 이전과 동일한 문제에 직면합니다.
API 문서를 여러 번 읽었는데이 작업을 수행하는 방법을 알아낼 수없는 것 같습니다. 미리 감사드립니다!
업데이트 : TensorFlow 1.0에는 .NET Framework tf.scatter_nd()
를 만들지 delta
않고 아래 에서 만드는 데 사용할 수 있는 연산자가 포함되어 있습니다 tf.SparseTensor
.
이것은 실제로 기존 작전에서는 놀랍게도 까다 롭습니다! 아마도 누군가가 다음을 마무리하는 더 좋은 방법을 제안 할 수 있지만 여기에 한 가지 방법이 있습니다.
tf.constant()
텐서 가 있다고 가정 해 보겠습니다 .
c = tf.constant([[0.0, 0.0, 0.0],
[0.0, 0.0, 0.0],
[0.0, 0.0, 0.0]])
... 1.0
위치 [1, 1] 에 추가하려고합니다 . 이를 수행 할 수있는 한 가지 방법 은 변경 사항을 나타내는 tf.SparseTensor
, 를 정의하는 delta
것입니다.
indices = [[1, 1]] # A list of coordinates to update.
values = [1.0] # A list of values corresponding to the respective
# coordinate in indices.
shape = [3, 3] # The shape of the corresponding dense tensor, same as `c`.
delta = tf.SparseTensor(indices, values, shape)
그런 다음 tf.sparse_tensor_to_dense()
op를 사용하여 밀도가 높은 텐서를 delta
만들고 다음 위치에 추가 할 수 있습니다 c
.
result = c + tf.sparse_tensor_to_dense(delta)
sess = tf.Session()
sess.run(result)
# ==> array([[ 0., 0., 0.],
# [ 0., 1., 0.],
# [ 0., 0., 0.]], dtype=float32)
방법에 대해 tf.scatter_update(ref, indices, updates)
나 tf.scatter_add(ref, indices, updates)
?
ref[indices[...], :] = updates
ref[indices[...], :] += updates
참조 이 .
tf.scatter_update
에는 경사 하강 법 연산자가 할당되어 있지 않으며 최소한으로 학습하는 동안 오류가 발생합니다 tf.train.GradientDescentOptimizer
. 저수준 함수로 비트 조작을 구현해야합니다.
참조 URL : https://stackoverflow.com/questions/34685947/adjust-single-value-within-tensor-tensorflow
'program story' 카테고리의 다른 글
update-alternatives --config java 명령을 사용하는 방법 (0) | 2021.01.08 |
---|---|
VB.Net Lambda 식을 작성하는 방법 (0) | 2021.01.08 |
파일 이름 특수 문자를 제거하는 크로스 플랫폼 Java 메서드가 있습니까? (0) | 2021.01.08 |
Maven에서 메시지를 어떻게 표시 할 수 있습니까? (0) | 2021.01.08 |
정규식 : 0 개 이상의 선택적 문자 / (0) | 2021.01.08 |