layer_tester_cuda_smart_ptr convolution_layer_testing_schema::create_tester_specific( const layer_configuration_specific& input_configuration_specific, const layer_configuration_specific& output_configuration_specific) const { layer_tester_cuda_smart_ptr res; if (output_configuration_specific.get_neuron_count() == output_configuration_specific.feature_map_count) { res = layer_tester_cuda_smart_ptr(new fully_connected_layer_tester_cuda()); } else { switch (output_configuration_specific.dimension_sizes.size()) { case 1: if (cuda_config->get_compute_capability() >= 300) res = layer_tester_cuda_smart_ptr(new convolution_1d_layer_tester_cuda_kepler()); else res = layer_tester_cuda_smart_ptr(new convolution_1d_layer_tester_cuda_fermi()); break; case 2: if (cuda_config->get_compute_capability() >= 300) res = layer_tester_cuda_smart_ptr(new convolution_2d_layer_tester_cuda_kepler()); else res = layer_tester_cuda_smart_ptr(new convolution_2d_layer_tester_cuda_fermi()); break; default: throw neural_network_exception((boost::format("No CUDA tester for the convolution layer of %1% dimensions") % output_configuration_specific.dimension_sizes.size()).str()); break; } } return res; }
layer_tester_cuda_smart_ptr max_subsampling_layer_testing_schema::create_tester_specific( const layer_configuration_specific& input_configuration_specific, const layer_configuration_specific& output_configuration_specific) const { layer_tester_cuda_smart_ptr res; switch (output_configuration_specific.dimension_sizes.size()) { case 2: res = layer_tester_cuda_smart_ptr(new max_subsampling_2d_layer_tester_cuda()); break; default: throw neural_network_exception((boost::format("No CUDA tester for the max subsampling layer of %1% dimensions") % output_configuration_specific.dimension_sizes.size()).str()); break; } return res; }
layer_tester_cuda_smart_ptr untile_layer_testing_schema::create_tester_specific( const layer_configuration_specific& input_configuration_specific, const layer_configuration_specific& output_configuration_specific) const { return layer_tester_cuda_smart_ptr(new untile_layer_tester_cuda()); }
layer_tester_cuda_smart_ptr hyperbolic_tangent_layer_testing_schema::create_tester_specific( const layer_configuration_specific& input_configuration_specific, const layer_configuration_specific& output_configuration_specific) const { return layer_tester_cuda_smart_ptr(new hyperbolic_tangent_layer_tester_cuda()); }
layer_tester_cuda_smart_ptr soft_rectified_linear_layer_testing_schema::create_tester_specific( const layer_configuration_specific& input_configuration_specific, const layer_configuration_specific& output_configuration_specific) const { return layer_tester_cuda_smart_ptr(new soft_rectified_linear_layer_tester_cuda()); }