Exemplo n.º 1
0
def forward(netwrok, x):
    """
        forward propagation(순방향 전파)
        forward(각 가중치 행렬, x = 이미지 1장)
        파라미터 x: 이미지 한 개의 정보를 가지고 있는 배열(784,) / 사이즈만 있고, 1차원인 배열
        행이 1개이고 원소의 갯수가 784개인 데이터
        """
    # 가중치 행렬(weight matrices)
    W1, W2, W3 = network['W1'], network['W2'], network['W3']
    b1, b2, b3 = network['b1'], network['b2'], network['b3']

    # 첫번쨰 은닉층
    a1 = x.dot(W1) + b1
    # 첫번째 은닉층에서 나오는 출력값 (z1)
    z1 = sigmoid(a1)
    # shorcut: z1 = sigmoid(x.dot(W1) + b1)

    # 두번째 은닉층
    a2 = z1.dot(W2) + b2
    z2 = sigmoid(a2)

    # 출력층
    a3 = z2.dot(W3) + b3
    y = softmax(a3)

    return y
Exemplo n.º 2
0
def forward(network,x): # x는 1차원이 아닌 2차원이라고 가정한다
    # 가중치 행렬
    W1, W2, W3 = network['W1'], network['W2'], network['W3']
    b1, b2, b3 = network['b1'], network['b2'], network['b3']

    z1 = sigmoid(x.dot(W1) + b1)    # 첫번째 은닉층 (propagation)
    z2 = sigmoid(z1.dot(W2) + b2)   # 두번째 은닉층 (propagation)
    y = softmax(z2.dot(W3) + b3)    # output layer

    return y
Exemplo n.º 3
0
def predict(network, X_test):
    """
    신경망에서 사용되는 가중치행렬과 테스트 데이터를 전달받아서
    테스트 데이터의 예측값(배열)을 리턴
    """
    W1, W2, W3 = network['W1'], network['W2'], network['W3']
    b1, b2, b3 = network['b1'], network['b2'], network['b3']

    a1 = X_test.dot(W1) + b1
    z1 = sigmoid(a1)

    a2 = z1.dot(W2) + b2
    z2 = sigmoid(a2)

    pred = z2.dot(W3) + b3
    return softmax(pred)
Exemplo n.º 4
0
def forward(network, x):
    """
    x : 이미지 한 개의 정보를 가지고 있는 배열(784, )
    """
    # 가중치, 편향 행렬
    W1, W2, W3 = network['W1'], network['W2'], network['W3']
    b1, b2, b3 = network['b1'], network['b2'], network['b3']

    a1 = x.dot(W1) + b1
    z1 = sigmoid(a1)

    a2 = z1.dot(W2) + b2
    z2 = sigmoid(a2)

    a3 = z2.dot(W3) + b3
    y = softmax(a3)
    return y
Exemplo n.º 5
0
def forward(network, x):
    """  ex08의 forward에서 마지막에 mini_batch 활성 함수에 넣어줌  """
    # 가중치 행렬 (weight matrices)
    W1, W2, W3 = network['W1'], network['W2'],network['W3']
    b1, b2, b3 = network['b1'], network['b2'],network['b3']

    # 첫번째 은닉층
    a1 = x.dot(W1) + b1
    z1 = sigmoid(a1)

    # 두번째 은닉층
    a2 = z1.dot(W2) + b2
    z2 = sigmoid(a2)

    #output layer
    a3 = z2.dot(W3) + b3
    y = softmax(a3)

    return y
Exemplo n.º 6
0
def forward(network, x):
    """
    순방향 전파(forward propagation).
    파라미터 x: 이미지 한 개의 정보를 가지고 있는 배열. (784,)
    """
    # 가중치 행렬(Weight Matrices)
    W1, W2, W3 = network['W1'], network['W2'], network['W3']
    # bias matrices
    b1, b2, b3 = network['b1'], network['b2'], network['b3']

    # 첫번째 은닉층
    a1 = x.dot(W1) + b1
    z1 = sigmoid(a1)

    # 두번째 은닉층
    a2 = z1.dot(W2) + b2
    z2 = sigmoid(a2)

    # 출력층
    a3 = z2.dot(W3) + b3
    y = softmax(a3)

    return y
Exemplo n.º 7
0
import numpy as np
from ch03.ex05 import softmax

if __name__ == '__main__':
    x = np.array([1, 2, 3])
    s = softmax(x)
    print(s)

    X = np.array([[1, 2, 3], [4, 5, 6]])
    s = softmax(X)
    print(s)

    # NumPy Broadcast(브로드캐스트)
    # NumPy array의 축(axis)
    #  axis=0: row의 인덱스가 증가하는 축
    #  axis=1: column의 인덱스가 증가하는 축

    # array과 scalar 간의 브로드캐스트
    x = np.array([1, 2, 3])
    print('x =', x)
    print('x + 10 =', x + 10)

    # 2차원 array와 1차원 array 간의 브로드캐스트
    # (n, m) array와 (m,) 1차원 array는 브로드캐스트가 가능
    # (n, m) array와 (n,) 1차원 array인 경우는,
    # 1차원 array를 (n,1) shape으로 reshape를 하면 브로드캐스트가 가능.
    X = np.arange(6).reshape((2, 3))
    print('X shape:', X.shape)
    print('X =', X)

    a = np.arange(1, 4)
Exemplo n.º 8
0
import numpy as np
from ch03.ex05 import softmax

if __name__ == '__main__':

    X = np.array([[1, 2, 3], [4, 5, 6]])
    s = softmax(X)
    print(s)

    # NumPy Broadcast(브로드캐스트)
    # NumPy array의 축(axis)
    #  axis=0: row의 인덱스가 증가하는 축
    #  axis=1: column의 인덱스가 증가하는 축

    # array과 scalar 간의 브로드캐스트
    x = np.array([1, 2, 3])
    print('x =', x)
    print('x + 10 =', x + 10)
    print('===========')
    # 2차원 array와 1차원 array 간의 브로드캐스트
    # (n, m) array와 (m,) 1차원 array는 브로드캐스트가 가능
    # (n, m) array와 (n,) 1차원 array인 경우는,
    # 1차원 array를 (n,1) shape으로 reshape를 하면 브로드캐스트가 가능.
    X = np.arange(6).reshape((2, 3))
    print('X shape:', X.shape)
    print('X =', X)

    a = np.arange(1, 4)
    print('a shape:', a.shape)
    print('a =', a)