4. 신경망의 내적
페이지 정보
작성자 관리자 댓글 0건 조회 2,136회 작성일 20-02-23 09:32본문
4. 신경망의 내적
[ 행렬의 곱 (행렬의 내적) ]
- 2차원 배열의 내적(행렬의 곱)
파이썬에서 내적을 구하기
A = np.array([[1,2],[3,4]])
B = np.array([[5,6],[7,8]])
np.dot(A, B) #내적을 구하는 함수
실습.
# -*- coding: utf-8 -*-
import numpy as np
A = np.array([[1,2],[3,4]])
print(A)
print("---------------------")
print(A.shape) # 변수의 형태를 튜플로 보여줌
print(np.ndim(A)) # n차원
print("---------------------")
B = np.array([[5,6],[7,8]])
print(B)
print("---------------------")
print(B.shape) # 변수의 형태를 튜플로 보여줌
print(np.ndim(B)) # n차원
print("---------------------")
print(np.dot(A, B)) # 행렬의 곱
결과.
* 행렬의 내적은 형상에 주의 해야한다.
행렬은 내적은 대응하는 차원의 원소 수를 일치 시켜야 한다.
실습.
# -*- coding: utf-8 -*-
import numpy as np
A = np.array([[1,2,3],[4,5,6]])
print(A)
print("---------------------")
print(A.shape)
print(np.ndim(A))
print("---------------------")
B = np.array([[1,2],[3,4],[5,6]])
print(B)
print("---------------------")
print(B.shape)
print(np.ndim(B))
print("---------------------")
print(np.dot(A, B)) # 행렬의 곱
결과.
실습.
# -*- coding: utf-8 -*-
import numpy as np
A = np.array([[1,2],[3,4],[5,6]])
print(A)
print("---------------------")
print(A.shape)
print(np.ndim(A))
print("---------------------")
B = np.array([1,2])
print(B)
print("---------------------")
print(B.shape)
print(np.ndim(B))
print("---------------------")
print(np.dot(A, B)) # 행렬의 곱
결과.
[신경망의 내적(가중치만 적용)]
실습
# -*- coding: utf-8 -*-
import numpy as np
X = np.array([1,2]) #입력신호
W = np.array([[1,3,5],[2,4,6]]) # 1,3,5는 x1의 가중치 / 2,4,6은 x2의 가중치
Y = np.dot(X,W)
print(X)
print("---------------------")
print(X.shape)
print(np.ndim(X))
print("---------------------")
print(W)
print("---------------------")
print(W.shape)
print(np.ndim(W))
print("---------------------")
print(Y)
print("---------------------")
print(Y.shape)
print(np.ndim(Y))
결과.
실습.
# -*- coding: utf-8 -*-
import numpy as np
X = np.array([1.0,0.5]) #입력신호
print(X)
print("---------------------")
print(X.shape)
print(np.ndim(X))
print("---------------------")
W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) # 가중치
print(W1)
print("---------------------")
print(W1.shape)
print(np.ndim(W1))
print("---------------------")
B1 = np.array([0.1, 0.2, 0.3]) #편향
print(B1)
print("---------------------")
print(B1.shape)
print(np.ndim(B1))
print("---------------------")
A1 = np.dot(X,W1) + B1
print(A1)
print("---------------------")
print(A1.shape)
print(np.ndim(A1))
결과.
실습.
# -*- coding: utf-8 -*-
import numpy as np
def sigmoid(x):
return 1/ (1+np.exp(-x))
X = np.array([1.0,0.5]) #입력신호
print(X)
print("---------------------")
print(X.shape)
print(np.ndim(X))
print("---------------------")
W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) # 가중치
print(W1)
print("---------------------")
print(W1.shape)
print(np.ndim(W1))
print("---------------------")
B1 = np.array([0.1, 0.2, 0.3]) #편향
print(B1)
print("---------------------")
print(B1.shape)
print(np.ndim(B1))
print("---------------------")
A1 = np.dot(X,W1) + B1
print(A1)
print("---------------------")
print(A1.shape)
print(np.ndim(A1))
z1 = sigmoid(A1)
print(z1)
print("---------------------")
print(z1.shape)
print(np.ndim(z1))
결과.
실습.
# -*- coding: utf-8 -*-
import numpy as np
def sigmoid(x):
return 1/ (1+np.exp(-x))
X = np.array([1.0,0.5]) #입력신호
print(X)
print("---------------------")
W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) # 가중치
print(W1)
print("---------------------")
B1 = np.array([0.1, 0.2, 0.3]) #편향
print(B1)
print("---------------------")
A1 = np.dot(X,W1) + B1
print(A1)
print("---------------------")
z1 = sigmoid(A1)
print(z1)
print("---------------------")
W2 = np.array([[0.1,0.4],[0.2,0.5],[0.3,0.6]]) # 가중치
print(W2)
print("---------------------")
B2 = np.array([0.1, 0.2]) #편향
print(B2)
print("---------------------")
A2 = np.dot(z1,W2) + B2
print(A2)
print("---------------------")
z2 = sigmoid(A2)
print(z2)
print("---------------------")
결과.
실습.
# -*- coding: utf-8 -*-
import numpy as np
def sigmoid(x):
return 1/ (1+np.exp(-x))
def identity_func(x):
return x
X = np.array([1.0,0.5]) #입력신호
print(X)
print("---------------------")
W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) # 가중치
print(W1)
print("---------------------")
B1 = np.array([0.1, 0.2, 0.3]) #편향
print(B1)
print("---------------------")
A1 = np.dot(X,W1) + B1
print(A1)
print("---------------------")
z1 = sigmoid(A1)
print(z1)
print("---------------------")
W2 = np.array([[0.1,0.4],[0.2,0.5],[0.3,0.6]]) # 가중치
print(W2)
print("---------------------")
B2 = np.array([0.1, 0.2]) #편향
print(B2)
print("---------------------")
A2 = np.dot(z1,W2) + B2
print(A2)
print("---------------------")
z2 = sigmoid(A2)
print(z2)
print("---------------------")
W3 = np.array([[0.1,0.3],[0.2,0.4]]) # 가중치
print(W3)
print("---------------------")
B3 = np.array([0.1, 0.2]) #편향
print(B3)
print("---------------------")
A3 = np.dot(z2,W3) + B3
print(A3)
print("---------------------")
Y = identity_func(A3) # 항등함수 : σ() (시그마)
print(Y)
print("---------------------")
# 출력층의 활성화 함수는 시그모이드, 시그마, 소프트맥스 를 사용할 수 있다.
결과.
실습.
# -*- coding: utf-8 -*-
import numpy as np
#가중치와 편향을 초기화해주는 함수
def sigmoid(x):
return 1/ (1+np.exp(-x))
def identity_func(x):
return x
def init_network():
network = {}
network['W1'] = np.array([[0.1, 0.3, 0.5],[0.2, 0.4, 0.6]])
network['b1'] = np.array([0.1, 0.2, 0.3])
network['W2'] = np.array([[0.1, 0.4],[0.2, 0.5],[0.3, 0.6]])
network['b2'] = np.array([0.1, 0.2])
network['W3'] = np.array([[0.1, 0.3],[0.2, 0.4]])
network['b3'] = np.array([0.1,0.2])
return network
# 입력 신호를 출력으로 변환하는 처리과정(순방향)
def forward(network, x):
W1, W2, W3 = network['W1'], network['W2'], network['W3']
b1, b2, b3 = network['b1'], network['b2'], network['b3']
a1 = np.dot(x,W1) + b1
z1 = sigmoid(a1)
a2 = np.dot(z1,W2) + b2
z2 = sigmoid(a2)
a3 = np.dot(z2,W3) + b3
y = identity_func(a3)
return y
network = init_network()
x = np.array([1.0, 0.5])
print(x)
print("---------------------")
y = forward(network, x)
print(y)
결과.
댓글목록
등록된 댓글이 없습니다.