딥러닝(역전파)
Backpropagation
- 순전파가 입력층에서 출력층으로 향한다면 역전파는 반대로 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트 해가는 과정이다.
Backpropagation과 관련된 and,or,xor 문제 풀어보기
- import 모듈
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras import optimizers
import numpy as np
- 기본 배열 모양
x = np.array([[0,0],[0,1],[1,0],[1,1]])
y_and = np.array([[0],[0],[0],[1]])
y_or = np.array([[0],[1],[1],[1])
y_xor = np.array([[0],[1],[1],[0])
- 모델 정의
model = Sequential()
model.add(Dense(1, input_dim=2, activation='sigmoid'))
model.summary()
opt =optimizers.SGD(learning_rate=0.001)
model.compile(loss='binary_crossentropy',
optimizer=opt)
- 결과
model.fit(x,모델,epochs=1000,batch_size=4)
- 테스트 코드
test = np.array([[0,0],[0,1],[1,0],[1,1]])
pred = model.predict(test)
print(pred)
-
and [[0.42935652] [0.47724837] [0.51778793] [0.5657641 ]]
-
or [[0.47899342] [0.5784096 ] [0.6151004 ] [0.704564 ]]
-
xor [[0.45987922] [0.5446485 ] [0.5799606 ] [0.6598244 ]]
-> xor 값이 잘 안나오게 된다. 이 문제를 은닉층을 쌓게 됨으로써 해결할 수 있다.
Leave a comment