[FFmpeg-devel] [PATCH 1/7] libavfilter: Adds on the fly generation of default DNN models for tensorflow backend instead of storing binary model.
Michael Niedermayer
michael at niedermayer.cc
Fri Aug 3 16:11:39 EEST 2018
On Thu, Aug 02, 2018 at 09:52:42PM +0300, Sergey Lavrushkin wrote:
> This patch provides on the fly generation of default DNN models for tensorflow backend,
> that eliminates data duplication for model weights. Also, files with internal weights
> were replaced with automatically generated files for models I trained. Scripts for
> training and generating these files can be found here:
> https://github.com/HighVoltageRocknRoll/sr
>
[...]
> +static TF_Operation* add_conv_layers(TFModel* tf_model, const float** consts, const int64_t** consts_dims,
> + const int* consts_dims_len, const char** activations,
> + TF_Operation* input_op, int layers_num)
> +{
> + int i;
> + TF_OperationDescription* op_desc;
> + TF_Operation* op;
> + TF_Operation* transpose_op;
> + TF_Output input;
> + int64_t strides[] = {1, 1, 1, 1};
> + int32_t* transpose_perm;
> + TF_Tensor* tensor;
> + int64_t transpose_perm_shape[] = {4};
> + char name_buffer[256];
> +
> + op_desc = TF_NewOperation(tf_model->graph, "Const", "transpose_perm");
> + TF_SetAttrType(op_desc, "dtype", TF_INT32);
> + tensor = TF_AllocateTensor(TF_INT32, transpose_perm_shape, 1, 4 * sizeof(int32_t));
> + transpose_perm = (int32_t*)TF_TensorData(tensor);
> + transpose_perm[0] = 1;
> + transpose_perm[1] = 2;
> + transpose_perm[2] = 3;
> + transpose_perm[3] = 0;
> + TF_SetAttrTensor(op_desc, "value", tensor, tf_model->status);
> + if (TF_GetCode(tf_model->status) != TF_OK){
> + return NULL;
> + }
> + transpose_op = TF_FinishOperation(op_desc, tf_model->status);
> + if (TF_GetCode(tf_model->status) != TF_OK){
> + return NULL;
> + }
> +
> + input.index = 0;
> + for (i = 0; i < layers_num; ++i){
> + sprintf(name_buffer, "conv_kernel%d", i);
sprintf() should normally not be used as its too easy to end up
overwriting the output.
snprintf() is a safer alternative
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Complexity theory is the science of finding the exact solution to an
approximation. Benchmarking OTOH is finding an approximation of the exact
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180803/d11c4185/attachment.sig>
More information about the ffmpeg-devel
mailing list