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(); } }
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)); }
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); } } } }