Tensorflow C API работает с моделью (data,dims)
, обрабатывая данные как плоский массив, снабженный необходимыми измерениями.
Шаг 1 : выделение new
Тензор
Посмотрите на TF_AllocateTensor
( ref ):
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
: уменьшение (затемнение *): т.е. 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 не предназначен для регулярного использования, поэтому его сложнее освоить + не хватает документации.Я понял многое из этого с помощью экспериментов.Есть предложения от более опытных разработчиков?