입력에서 Noise를 제거한 내용이 출력으로 나오는 Denoising Autoencoder를 구현해 봅니다.
- 필요한 package들을 import합니다.
- random seed를 설정합니다.
- 필기체 숫자 data를 얻어오는 함수를 정의합니다.
- 필기체 숫자 image를 그림으로 그려주는 함수를 정의합니다.
- 필기체 숫자 image에 noise를 섞어서 돌려주는 함수를 정의합니다.
- 필기체 숫자 data를 읽어옵니다.
- 필기체 숫자 image에 noise를 섞어서 x_noise_data에 저장하고, 필기체 숫자 image test set에 noise를 섞어서 x_test_noise_data에 저장합니다.
- 필기체 숫자 data의 내용을 살펴보고 noise가 섞인 내용도 살펴봅니다.
- noise섞인 필기체 숫자 image를 넣어줄 placeholder와 필기체 숫자 image를 넣어줄 placeholder를 만들어서 x_input, y_input에 저장합니다.
- 계산도중에 사용할 variable을 만들어서 weight_1_var, bias_1_var, weight_2_var, bias_2_var, weight_3_var, bias_3_var, weight_4_var, bias_4_var, weight_5_var, bias_5_var, weight_6_var, bias_6_var에 저장합니다.
- weight에 사용할 variable은 적당한 표준편차를 가지는 정규분포에서 random하게 뽑아서 초기화합니다.
- Multi-layer Neural Network에서는 weight에 사용할 variable을 random하게 초기화하지 않으면 Gradient Descent로 학습이 진행되지 않습니다.
- 입력에서 Noise를 제거한 내용이 출력으로 나오는 Denoising Autoencoder의 계산과정을 정의합니다.
- Neuron이 784 : 300 : 300 : 2 : 300 : 300 : 784 로 구성되어 있는 Neural Network입니다.
- cost의 계산과정을 정의합니다.
- cost를 최소화시키는 operation을 AdamOptimizer으로 정의하여 train_step에 저장합니다.
- x_input, weight_1_var, bias_1_var, weight_2_var, bias_2_var, weight_3_var, bias_3_var, weight_4_var, bias_4_var, weight_5_var, bias_5_var, weight_6_var, bias_6_var, fc_1, relu_1, fc_2, relu_2, fc_3, relu_3, fc_4, relu_4, fc_5, relu_5, fc_6, y_output, cost_output, train_step을 print로 출력해 봅니다. 모두 값이 보이지 않는 알아보기 힘든 결과가 출력됩니다.
- Tensorflow Session을 open합니다.
- step, cost, mini_batch, max_epoch를 초기화합니다.
- Gradient Descent를 사용하여 cost가 가장 작아지는 weight, bias들을 찾습니다.
- x_test_data 필기체 숫자 test data를 넣고 나온 결과를 y_pred에 저장합니다.
- 결과의 정확도를 mean squared error로 측정하여 출력합니다.
- y_test_data 필기체 숫자 test data의 숫자 종류를 y_data_class에 저장합니다.
- 10개의 noise가 섞인 필기체 숫자를 입력하여 출력을 그림으로 그려봅니다.
- Tensorflow Session을 close합니다.
토론이 없습니다