コード例 #1
0
	layer_data_custom_list::layer_data_custom_list(const const_layer_list& layer_list)
	{
		resize(layer_list.size());
		for(unsigned int i = 0; i < layer_list.size(); ++i)
		{
			at(i) = layer_list[i]->create_layer_data_custom();
		}
	}
コード例 #2
0
	void layer_data_custom_list::check_consistency(const const_layer_list& layer_list) const
	{
		if (size() != layer_list.size())
			throw neural_network_exception("data custom count is not equal layer count");
		for(unsigned int i = 0; i < size(); ++i)
			layer_list[i]->check_layer_data_custom_consistency(*at(i));
	}
コード例 #3
0
	void network_data_initializer::initialize(
		layer_data_list& data_list,
		const const_layer_list& layer_list,
		network_output_type::output_type type)
	{
		if (type == network_output_type::type_classifier)
		{
			if ((layer_list.size() >= 2)
				&& (layer_list[layer_list.size() - 1]->get_uuid() == sigmoid_layer::layer_guid)
				&& (layer_list[layer_list.size() - 2]->get_uuid() == convolution_layer::layer_guid))
			{
				nnforge_shared_ptr<const convolution_layer> layer_derived = nnforge_dynamic_pointer_cast<const convolution_layer>(layer_list[layer_list.size() - 2]);
				unsigned int output_feature_map_count = data_list[data_list.size() - 2]->at(1).size();
				if (output_feature_map_count > 1)
				{
					float init_bias = - logf(output_feature_map_count - 1);
					std::fill_n(data_list[data_list.size() - 2]->at(1).begin(), output_feature_map_count, init_bias);
				}
			}
		}
	}