지금까지 사용한 Weight 초기화 방법은 다음과 같습니다.
1 2 3 4 5 6 7 | //1 W = tf.Variable(tf.random_normal([y_output]), name="weight") //2 W = tf.Variable(tf.random_normal([x_input, y_output]), name='weight') ... | cs |
더욱 좋은 성능을 내기 위해 다음과 같은 초기화 방법을 사용할 수 있습니다.
1. Xavier Initializer
1 2 3 4 5 | //import numpy as np //W = np.random.randn(x_input, y_output)/np.sqrt(x_input) W = tf.get_variable("W", shape=[x_input, y_output], initializer=tf.contrib.layers.xavier_initializer()) | cs |
2. He Initializer
1 2 3 4 5 | //import numpy as np //W = np.random.randn(x_input, y_output)/np.sqrt(x_input / 2) W = tf.get_variable("W", shape=[x_input, y_output], initializer=tf.contrib.layers.variance_scaling_initializer()) | cs |
RBM 초기화 방법에 대해서는 여기를 참고하세요. RBM은 Xavier, He 초기화 방법에 비해 복잡하며 비슷한 결과를 냅니다.
'파이썬 > 머신러닝' 카테고리의 다른 글
[#E14] 머신러닝 팁과 용어 해석 (0) | 2018.12.11 |
---|---|
[#E13] DROP OUT 이란? (0) | 2018.12.10 |
[#E11] Vanishing Gradient와 ReLU (0) | 2018.12.10 |
[#E10] 딥러닝의 기초 XOR 문제란? (0) | 2018.12.08 |
[#E9] 학습 데이터 전처리 (PreProcessing) (0) | 2018.12.08 |