Как я могу изменить 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.
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);
Вот:
TF_DataType
: TF
эквивалент типа данных, которые вам нужны от Вот.dims
: Массив, соответствующий размерам тензора, который будет выделен, например. {1, 1, 80, 80}
num_dims
: длина тусклых (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 не предназначен для регулярного использования, поэтому его сложнее освоить + не хватает документации. Я многое понял из экспериментов. Есть предложения от более опытных разработчиков?
Других решений пока нет …