【问题标题】:How do I mutate value of a tensor in Tensorflow.js?如何在 Tensorflow.js 中改变张量的值?
【发布时间】:2018-04-12 17:17:40
【问题描述】:

如何在 Tensorflow.js 中改变张量的值?例如,如果我有一个这样创建的张量: const a = tf.tensor1d([1,2,3,4])

如何改变张量的第三个元素的值?我知道张量是不可变的,变量是可变的。

这样做:const a = tf.variable(tf.tensor1d([1,2,3,4])) 似乎无法解决问题。我做不到:

const a = a[0].assign(5)

我可以像这样在 python tensorflow 中做到这一点:

a = tf.Variable([1,2,3,4]) a = a[0].assign(100) with tf.Session() as sess: sess.run(tf.global_variables_iniliazer()) print sess.run(a)

这会输出[100, 2,3,4]

【问题讨论】:

    标签: tensorflow tensor dplyr tensorflow.js


    【解决方案1】:

    tf.buffer 适合你吗?

    // Create a buffer and set values at particular indices.
    const a = tf.tensor1d([1, 2, 3, 4]);
    const buffer = tf.buffer(a.shape, a.dtype, a.dataSync());
    buffer.set(5, 0);
    const b = buffer.toTensor();
    // Convert the buffer back to a tensor.
    b.print();
    

    Tensor
        [5, 2, 3, 4]
    

    【讨论】:

    • 谢谢。如何同时设置多个索引的值
    • 我怀疑您现在需要为此使用 for 循环。没有批量编辑操作。您还可以将张量中的数据拉入一个数组,编辑该数组,然后创建一个新的张量。请记住,反向传播无法通过这个逃生舱口。
    【解决方案2】:

    我必须使用 mulStrictaddStrict 来执行此操作,它们会进行元素乘法和加法。

    const a = tf.tensor1d([1,2,3,4]);
    tf.mulStrict(a, tf.tensor1d([0,1,1,1]))
      .addStrict(tf.tensor1d([100, 0, 0, 0]);
    

    这是基于 asnwer here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-17
      相关资源
      最近更新 更多