layer_updater_cuda_smart_ptr sigmoid_layer_updater_schema::create_updater_specific( const layer_configuration_specific& input_configuration_specific, const layer_configuration_specific& output_configuration_specific) const { nnforge_shared_ptr<const sigmoid_layer> layer_derived = nnforge_dynamic_pointer_cast<const sigmoid_layer>(layer_schema); if (layer_derived->affected_feature_map_id_list.empty()) return layer_updater_cuda_smart_ptr(new activation_layer_cudnn_updater_cuda(CUDNN_ACTIVATION_SIGMOID)); else return layer_updater_cuda_smart_ptr(new sigmoid_partial_layer_updater_cuda()); }
layer_updater_cuda_smart_ptr max_subsampling_layer_updater_schema::create_updater_specific( const layer_configuration_specific& hyperbolic_tangent_layer_hessian_schema, const layer_configuration_specific& output_configuration_specific) const { layer_updater_cuda_smart_ptr res; switch (output_configuration_specific.dimension_sizes.size()) { case 2: res = layer_updater_cuda_smart_ptr(new max_subsampling_2d_layer_updater_cuda()); break; default: throw neural_network_exception((boost::format("No CUDA updater for the max subsampling layer of %1% dimensions") % output_configuration_specific.dimension_sizes.size()).str()); break; } return res; }
layer_updater_cuda_smart_ptr local_contrast_subtractive_layer_updater_schema::create_updater_specific( const layer_configuration_specific& input_configuration_specific, const layer_configuration_specific& output_configuration_specific) const { layer_updater_cuda_smart_ptr res; switch (output_configuration_specific.dimension_sizes.size()) { case 2: res = layer_updater_cuda_smart_ptr(new local_contrast_subtractive_2d_layer_updater_cuda()); break; default: throw neural_network_exception((boost::format("No CUDA updater for the local contrast subtractive layer of %1% dimensions") % output_configuration_specific.dimension_sizes.size()).str()); break; } return res; }
layer_updater_cuda_smart_ptr softmax_layer_updater_schema::create_updater_specific( const layer_configuration_specific& input_configuration_specific, const layer_configuration_specific& output_configuration_specific) const { return layer_updater_cuda_smart_ptr(new softmax_layer_updater_cuda()); }
layer_updater_cuda_smart_ptr hyperbolic_tangent_layer_updater_schema::create_updater_specific( const layer_configuration_specific& hyperbolic_tangent_layer_hessian_schema, const layer_configuration_specific& output_configuration_specific) const { return layer_updater_cuda_smart_ptr(new hyperbolic_tangent_layer_updater_cuda()); }