(
model, op_call, blob_in, blob_out, dim_in, dim_out, weight_init=None,
bias_init=None, WeightInitializer=None, BiasInitializer=None,
enable_tensor_core=False, float16_compute=False, **kwargs
)
| 11 | |
| 12 | |
| 13 | def _FC_or_packed_FC( |
| 14 | model, op_call, blob_in, blob_out, dim_in, dim_out, weight_init=None, |
| 15 | bias_init=None, WeightInitializer=None, BiasInitializer=None, |
| 16 | enable_tensor_core=False, float16_compute=False, **kwargs |
| 17 | ): |
| 18 | WeightInitializer = initializers.update_initializer( |
| 19 | WeightInitializer, weight_init, ("XavierFill", {}) |
| 20 | ) |
| 21 | BiasInitializer = initializers.update_initializer( |
| 22 | BiasInitializer, bias_init, ("ConstantFill", {}) |
| 23 | ) |
| 24 | if not model.init_params: |
| 25 | WeightInitializer = initializers.ExternalInitializer() |
| 26 | BiasInitializer = initializers.ExternalInitializer() |
| 27 | |
| 28 | blob_out = blob_out or model.net.NextName() |
| 29 | bias_tags = [ParameterTags.BIAS] |
| 30 | if 'freeze_bias' in kwargs: |
| 31 | bias_tags.append(ParameterTags.COMPUTED_PARAM) |
| 32 | |
| 33 | weight = model.create_param( |
| 34 | param_name=blob_out + '_w', |
| 35 | shape=[dim_out, dim_in], |
| 36 | initializer=WeightInitializer, |
| 37 | tags=ParameterTags.WEIGHT |
| 38 | ) |
| 39 | bias = model.create_param( |
| 40 | param_name=blob_out + '_b', |
| 41 | shape=[dim_out, ], |
| 42 | initializer=BiasInitializer, |
| 43 | tags=bias_tags |
| 44 | ) |
| 45 | |
| 46 | # enable TensorCore by setting appropriate engine |
| 47 | if enable_tensor_core: |
| 48 | kwargs['engine'] = 'TENSORCORE' |
| 49 | |
| 50 | # Enable float 16 compute kernel (relevant for CUDA) |
| 51 | if float16_compute: |
| 52 | kwargs['float16_compute'] = True |
| 53 | |
| 54 | return op_call([blob_in, weight, bias], blob_out, **kwargs) |
| 55 | |
| 56 | |
| 57 | def fc(model, *args, **kwargs): |
no test coverage detected
searching dependent graphs…