Изменение тензора в С

Как я могу изменить TF_Tensor *, используя Tensorflow C_api, как это делается в C ++?

TensorShape inputShape({1,1,80,80});

Tensor inputTensor;
Tensor newTensor;

bool result = inputTensor->CopyFrom(newTensor, inputShape);

Я не вижу подобного метода, использующего c_api tenorflow.

1

Решение

Tensorflow C API работает с (data,dims) Модель — обработка данных в виде плоского необработанного массива, снабженного необходимыми измерениями.

Шаг 1: Выделение new Тензор

Посмотри на TF_AllocateTensor(ссылка):

TF_CAPI_EXPORT extern TF_Tensor* TF_AllocateTensor(TF_DataType,
const int64_t* dims,
int num_dims, size_t len);

Вот:

  1. TF_DataType: TF эквивалент типа данных, которые вам нужны от Вот.
  2. dims: Массив, соответствующий размерам тензора, который будет выделен, например. {1, 1, 80, 80}
  3. num_dims: длина тусклых (4 выше)
  4. len: уменьшите (dims, *): то есть 1 * 1 * 80 * 80 * sizeof (DataType) = 6400 * sizeof (DataType).

Шаг 2: Копирование данных

// Get the tensor buffer
auto buff = (DataType *)TF_TensorData(output_of_tf_allocate);
// std::memcpy() ...

Вот Вот пример кода из проекта, который я недавно написал, написав очень легкий Tensorflow C-API Wrapper.

Таким образом, по существу ваше изменение будет включать выделение вашего нового тензора и копирование данных из исходного тензора в buff,

API-интерфейс Tensorflow C не предназначен для регулярного использования, поэтому его сложнее освоить + не хватает документации. Я многое понял из экспериментов. Есть предложения от более опытных разработчиков?

1

Другие решения

Других решений пока нет …