Esempio n. 1
0
void TranSVD::d1_to_d2(Transformable &del_data, Transformable &data)
{
	Transformable new_data;
	VectorXd d1_vec = del_data.get_partial_data_eigen_vec(base_parameter_names);
	VectorXd d2_vec = Vt * d1_vec;
	for (int i = 0; i<Sigma.size(); ++i) {
		new_data[super_parameter_names[i]] = d2_vec[i];
	}
	del_data = new_data;
	forward(data);
}
Esempio n. 2
0
void TranSVD::d2_to_d1(Transformable &del_data, Transformable &data)
{
	Transformable new_data;
	VectorXd d2_vec = del_data.get_partial_data_eigen_vec(super_parameter_names);
	VectorXd d1_vec = Vt.transpose() * d2_vec;
	for (size_t i = 0; i < base_parameter_names.size(); ++i)
	{
		new_data[base_parameter_names[i]] = d1_vec[i];
	}
	del_data = new_data;
	reverse(data);
}