[deep learning 학습 노트] 주해 yusugomori의 DA 코드---dA.cpp - 모델 테스트

1875 단어
테스트 코드.이를 통해 알 수 있듯이 훈련할 때 단일 샘플, 단일 샘플의 훈련이고 NN에서는'stochasticgradient descent'에 속한다. 그렇지 않으면 한 무더기의 샘플이 함께 있는 것이 바로'standard gradient descent'이다.
void test_dA() 
{
	srand(0);
  
	double learning_rate = 0.1;
	double corruption_level = 0.3;
	int training_epochs = 100;

	int train_N = 10;
	int test_N = 2;
	int n_visible = 20;
	int n_hidden = 5;

	// training data
	int train_X[10][20] = {
		{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
		{1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
		{1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
		{1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
		{0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
		{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
		{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1},
		{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1},
		{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1},
		{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0}
	};

	// construct dA
	dA da(train_N, n_visible, n_hidden, NULL, NULL, NULL);

	// train
	for(int epoch=0; epoch<training_epochs; epoch++) 
	{
		// train it sample by sample
		for(int i=0; i<train_N; i++) 
		{
			da.train(train_X[i], learning_rate, corruption_level);
		}
	}

	// test data
	int test_X[2][20] = 
	  {
		{1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
		{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0}
	  };
	double reconstructed_X[2][20];


	// test
	for(int i=0; i<test_N; i++) 
	{
		da.reconstruct(test_X[i], reconstructed_X[i]);
		for(int j=0; j<n_visible; j++) 
		{
			printf("%.5f ", reconstructed_X[i][j]);
		}
		cout << endl;
	}
	 cout << endl;
}



int main() 
{
	test_dA();

	getchar();
	return 0;
}
프로그램 실행 결과:

좋은 웹페이지 즐겨찾기