examples - tensorflow playground
Tensorflow custom op-¿cómo leo y escribo desde Tensors? (1)
La forma más fácil de leer y escribir en tensorflow::Tensor
objects es convertirlos a un Eigen tensor , utilizando el tensorflow::Tensor::tensor<T, NDIMS>()
. Tenga en cuenta que debe especificar el tipo de elementos (C ++) en tensor como parámetro de plantilla T
Por ejemplo, para leer un valor particular de un tensor DT_FLOAT32
:
const Tensor& values_tensor = context->input(0);
auto x = value_tensor.tensor<float, 3>()(1, 4, 12);
Para escribir un valor particular a un tensor DT_FLOAT32
:
Tensor* output_tensor = ...;
output_tensor->tensor<float, 3>()(1, 2, 3) = 11.0;
También hay métodos de conveniencia para acceder a un escalar , vector o matriz .
Escribo una op de Tensorflow personalizada utilizando el tutorial y tengo problemas para entender cómo leer y escribir en / desde Tensors.
digamos que tengo un Tensor en mi OpKernel que obtengo de const Tensor& values_tensor = context->input(0);
(donde context = OpKernelConstruction*
)
si ese Tensor tiene forma, digamos, [2, 10, 20], ¿cómo puedo indexarlo (por ejemplo, auto x = values_tensor[1, 4, 12]
, etc.)?
de manera equivalente, si tengo
Tensor *output_tensor = NULL;
OP_REQUIRES_OK(context, context->allocate_output(
0,
{batch_size, value_len - window_size, window_size},
&output_tensor
));
¿cómo puedo asignar a output_tensor
, como output_tensor[1, 2, 3] = 11
, etc.?
lo siento por la pregunta tonta, pero los documentos realmente me están tropezando aquí y los ejemplos en el código del kernel de Tensorflow para operaciones integradas de alguna manera confunden esto hasta el punto de que me siento muy confundido :)
¡gracias!