학습 데이터를 다루다보면 원하는 결과가 아닌 NAN이 출력되는 경우가 있습니다. 이것의 원인은 다양한데, 일반적으로 세 가지가 있습니다.
1. Learning Rate가 너무 크거나 작게 설정된 경우
1 | optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01) | cs |
Solution : 특별한 방법 없이 다양한 Rate 값을 시도해야 합니다.
2. Over Fitting
Solution : 데이터 Regularization, 더 많은 데이터, 특징이 되는 값 제거
Regularization의 경우 Cost 함수 + Term으로 구성됩니다. Term은 다음과 같습니다.
1 2 3 4 5 6 7 8 9 10 11 | //TERM = REGULARIZATION STRENGTH * Cost(W) 0.001 * tf.reduce_sum(tf.square(W)) //(usege example) tf.reduce_mean(tf.square(hypothesis - Y) + 0.001*tf.reduce_sum(tf.square(W)) /* 0.001 = not important ... 1 = very important */ | cs |
REGULARIZATION STRENGTH는 해당 데이터의 Reqularization이 중요한지, 그렇지 않은지 나타내는 사용자 임의의 척도입니다.
3. 데이터 간의 차이가 매우 크거나 작은 경우
Solution : 데이터 Normalization (MinMaxScaler)
MinMaxScaler는 모든 데이터를 크기에 따라 0과 1사이의 값으로 조정합니다. 이는 다음과 같이 쉽게 사용할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | def MinMaxScaler(data): numerator = data - np.min(data, 0) denominator = np.max(data, 0) - np.min(data, 0) # noise term prevents the zero division return numerator / (denominator + 1e-7) xy = np.array([[828.659973, 833.450012, 908100, 828.349976, 831.659973], [823.02002, 828.070007, 1828100, 821.655029, 828.070007], [819.929993, 824.400024, 1438100, 818.97998, 824.159973], [816, 820.958984, 1008100, 815.48999, 819.23999], [819.359985, 823, 1188100, 818.469971, 818.97998], [819, 823, 1198100, 816, 820.450012], [811.700012, 815.25, 1098100, 809.780029, 813.669983], [809.51001, 816.659973, 1398100, 804.539978, 809.559998]]) xy = MinMaxScaler(xy) | cs |
결과
1 2 3 4 5 6 7 8 | [[0.99999999 0.99999999 0. 1. 1. ] [0.70548491 0.70439552 1. 0.71881782 0.83755791] [0.54412549 0.50274824 0.57608696 0.606468 0.6606331 ] [0.33890353 0.31368023 0.10869565 0.45989134 0.43800918] [0.51436 0.42582389 0.30434783 0.58504805 0.42624401] [0.49556179 0.42582389 0.31521739 0.48131134 0.49276137] [0.11436064 0. 0.20652174 0.22007776 0.18597238] [0. 0.07747099 0.5326087 0. 0. ]] | cs |
자세한 강의는 링크를 참고하세요
'파이썬 > 머신러닝' 카테고리의 다른 글
[#E11] Vanishing Gradient와 ReLU (0) | 2018.12.10 |
---|---|
[#E10] 딥러닝의 기초 XOR 문제란? (0) | 2018.12.08 |
[#E8] Fancy Softmax Regression이란? (0) | 2018.12.05 |
[#E7] 텍스트 파일로부터 데이터를 읽어오는 방법 (0) | 2018.12.05 |
[#E6] Multinomial Logistic Classification [Softmax Regression] (0) | 2018.12.04 |