Jupyter notebook으로 class를 정의하고 각종 활성화 함수를 정의해서 넣었는데 코드를 짜면서 주의할 점 몇 가지를 정리
- __init__ 함수로 시작하면서 변수 선언 초기화하는 거 생각
- 클래스 안에 함수 정의해줄때 self 항상 까먹지 말것
- 클래스 호출하면서 어느 객체에서 불러왔는지 헷갈리지 말것
- 클래스에서 함수꺼내는데 자꾸 nameerror 뜨는거 주의
#인공 신경망 클래스
class NeuralNetwork:
def __init__(self, input_size, hidden_size, output_size):
#가중치 초기화
self.params = {}
self.params['W1'] = np.random.randn(input_size, hidden_size)
self.params['B1'] = np.random.randn(hidden_size)
self.params['W2'] = np.random.randn(hidden_size, output_size)
self.params['B2'] = np.random.randn(output_size)
def forward(self, x):
#순전파
W1 , W2 = self.params['W1'],self.params['W2']
B1, B2 = self.params['B1'],self.params['B2']
h1 = np.dot(x, W1) + B1
z1=self.relu_function(h1)
h2 = np.dot(z1, W2) + B2
y =self.identity_function(h2)
return y
def step_function(self, x):
y = x > 0
return y.astype(int)
def sigmoid_function(self, x):
y = 1 / (1 + np.exp(-x))
return y
def tanh_function(self, x):
y = (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x))
return y
def relu_function(self, x):
y = np.maximum(0, x)
return y
def identity_function(self, x):
return x
def softmax_function(self, x):
y = np.exp(x) / np.sum(np.exp(x))
return y
학습 절차
- 랜덤으로 가중치를 초기화 -위의 코드는 여기까지의 과정
- 초기화된 가중치를 활용하여 순전파하여 예측값 도출
- 비용 함수를 활용하여 실제 값과 예측 값을 비교
- 비용함수를 작아지도록 가중치 업데이트
- 비용함수가 최소하될때까지 2~4를 반복 (반복횟수 Epoch)
'IT > Python' 카테고리의 다른 글
[Python] Django 간략하게 살펴보기 (Web FrameWork) (0) | 2023.06.23 |
---|---|
[데이터 시각화] Python-라이브러리 Seaborn 기초 내용 정리 (0) | 2023.03.31 |
[데이터 시각화] Python-라이브러리 matplotlib 기초 내용 정리 (0) | 2023.03.31 |
[데이터 처리] Python-pandas 기초 공부 내용 정리(연산, 데이터프레임 구조,통계 추출, 데이터 입출력) (0) | 2023.03.31 |
[데이터 처리] Python pandas-기초 공부 내용 정리 (자료구조) (0) | 2023.03.31 |
댓글