模型的训练.
model类 (model.h)中定义了如下的成员变量
Input_word_embeddings input_layer;
Linear_layer first_hidden_linear;
Activation_function first_hidden_activation;
Linear_layer second_hidden_linear;
Activation_function second_hidden_activation;
Output_word_embeddings output_layer;
Matrix<double,Dynamic,Dynamic,Eigen::RowMajor> output_embedding_matrix,
input_embedding_matrix,
input_and_output_embedding_matrix;
activation_function_type activation_function;
int ngram_size, input_vocab_size, output_vocab_size, input_embedding_dimension, num_hidden, output_embedding_dimension;
bool premultiplied;
model定义了两个构造方法,在trainNeuralNetWork.cpp中调用的是这个:
model() : ngram_size(1),
premultiplied(false),
activation_function(Rectifier),
output_embedding_matrix(Matrix<double,Dynamic,Dynamic,Eigen::RowMajor>()),
input_embedding_matrix(Matrix<double,Dynamic,Dynamic,Eigen::RowMajor>())
{
output_layer.set_W(&output_embedding_matrix);
input_layer.set_W(&input_embedding_matrix);
}
接着会调用下面代码对其中一些成员变量初始化.
nn.resize(myParam.ngram_size, myParam.input_vocab_size,
myParam.output_vocab_size, myParam.input_embedding_dimension,
myParam.num_hidden, myParam.output_embedding_dimension);
nn.initialize(rng, myParam.init_normal, myParam.init_range,
-log(myParam.output_vocab_size), myParam.parameter_update,
myParam.adagrad_epsilon);
nn.set_activation_function(
string_to_activation_function(myParam.activation_function));
其中resize方法
没有评论:
发表评论