일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- udemy
- 알고리즘
- Algorithm
- Fiori
- ui5
- S/4HANA
- SAP 번역
- BTP
- 클래스
- tm
- python
- 맥북
- 자바 클래스
- sap
- 파이썬
- Eclipse
- mac
- 자바
- Deep Learning
- 개발
- module
- 이클립스
- BOBF
- java
- 백준 알고리즘
- FPM
- BOPF
- visual studio code
- ABAP
- html
Archives
- Today
- Total
z2soo's Blog
Deep learning : XOR gate 본문
반응형
목차
- 모듈 삽입
- Data set
- Placeholder
- Weight, bias
- Hypothesis
- Cost function
- Train
- Session, 초기화
- 학습
- 예측
모듈 삽입
import tensorflow as tf
Data set
XOR gate 논리회로를 multi-layer를 사용하여 학습이 가능하다는 것을 보이고자 한다.
따라서 사용하는 데이터는 XOR 배타적인 논리연산을 이용한다. (두 값이 다른 경우에만 값이 1)
x_data = [[0,0],
[0,1],
[1,0],
[1,1]]
y_data = [[0],
[1],
[1],
[0]]
Placeholder
X = tf.placeholder(shape=(None,2), dtype=tf.float32)
Y = tf.placeholder(shape=(None,1), dtype=tf.float32)
Weight, bias
multi-layer 란 여러 logistic regression 학습을 여러번 진행한다는 의미이다. 한 layer 과정에서의 logistic 갯수는 n 개로 임의로 설정 한다. layer를 많이 설정할수록 cost 값은 낮아질 수 밖에 없다. 이때, gpu를 사용하는 이유는 수치연산에 특화되어 있어 mylti-layer 과정을 보다 빠르게 진행할 수 있기 때문이다. (메트릭스 곱셈을 다 수행하는 것, 메모리 사용을 많이 함)
- n : 처음 logistic의 갯수
- layer : layer의 갯수를 늘임에 따라 W3, b3 까지 설정하면 된다.
- W1 = tf.Variable( tf.random_normal( [ X의 열 갯수, n ] ), name = 'weight1' )
- b1 = tf.Variable( tf.random_normal( [ n ] ), name = 'bias1' )
- layer1 = tf.sigmoid( tf.matmul( X, W1 ) + b1 )
학습횟수 늘이는 것과 layer 갯수 늘이는 것의 차이?
logistic 갯수 늘이는 것과 layer 갯수 늘이는 것의 차이?
depth가 늘어가는 것 = layer가 늘어나는 것, 뒤로 값이 넘어갈수록 정확하기는 하지만, 너무 많아지만 오히려 안좋은 현상 발생할 수 있고, 둘 다 무조건 많다고 좋은 것은 아니다.
W1 = tf.Variable(tf.random_normal([2,2]), name='weight1')
b1 = tf.Variable(tf.random_normal([2]), name='bias1')
layer1 = tf.sigmoid(tf.matmul(X,W1)+b1)
# 다시 logistic을 수행하기 위해서는 y값이 2개가 나와야 다음 x로 들어가서 수행 가능
# 따라서 [2,2] , [2]크기로 냄
W2 = tf.Variable(tf.random_normal([2,1]), name='weight2')
b2 = tf.Variable(tf.random_normal([1]), name='bias2')
# 마지막 값은 logistic을 위해서 하나의 값으로 나온다.
Hypothesis
logit = tf.matmul(layer1,W2) + b2
H = tf.sigmoid(logit)
Cost function
cost = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=logit, labels=Y))
Train
optimizer = tf.train.GradientDescentOptimizer(learning_rate = 0.1 )
train = optimizer.minimize(cost)
Session, 초기화
sess = tf.Session()
sess.run(tf.global_variables_initializer())
학습
for step in range(30000):
_, cost_val = sess.run([train, cost], feed_dict={X: x_data,
Y: y_data})
if step % 3000 == 0:
print(f'cost값은:{cost_val}')
# cost값은:0.8544375896453857
# cost값은:0.482330858707428
# cost값은:0.040052928030490875
# cost값은:0.018248548731207848
# cost값은:0.011669149622321129
# cost값은:0.008541891351342201
# cost값은:0.00672385236248374
# cost값은:0.005538139026612043
# cost값은:0.004704924300312996
# cost값은:0.004087945446372032
예측
predict = tf.cast(H>0.5, tf.float32)
sess.run(predict, feed_dict={X:[[0,0]]})
# 출력
# array([[0.]], dtype=float32)
반응형
'Big data & AI > AL&DL' 카테고리의 다른 글
Web Crawling Keyword 용어 (0) | 2022.04.07 |
---|---|
Deep learning 예제: CNN 활용 과정 2 (0) | 2020.01.15 |
인공신경망과 딥러닝 (Neuron network & Deep learning) (0) | 2020.01.10 |
Comments