如何将映射函数应用于张量? (Tensorflow.js)

How do I apply a map function to a tensor ? (Tensorflow.js)

如何将函数应用于张量的每个元素,例如

var new_tensor = old_tensor.map(map_function)

如果你使用 oldTensordataSync 方法,你可以获得一个 TypedArray,你可以将其映射。

var old_tensor_vals = old_tensor.dataSync()
var new_tensor_vals = old_tensor_vals.map(map_function)

如果您的 map_function 足够具体,您可以简单地使用张量数学来完成。

下面的函数是

的实现
old => Math.random()>chance?Math.random():old;

const old = tf.randomUniform([10], 0, 10);
const chance = 0.75;

const mapped = tf.tidy(() => {
  const max = Math.round(100 * chance);
  const min = max - 1;
  const random = tf.randomUniform([old.shape[0]], 0, 100).floor();
  const ones = random.clipByValue(min, max).sub(tf.scalar(min));
  ones.print();

  const zeros = ones.sub(tf.scalar(1)).neg();
  zeros.print();

  const newValues = tf.randomUniform([old.shape[0]]); //or whatever you want
  //newValues.print();

  return old.mul(ones).add(newValues.mul(zeros));
});

old.print();
mapped.print();
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.10.0">
</script>