본문 바로가기

분류 전체보기76

3-2. 신경망 3.4. 3층 신경망 구현하기 3층 신경망에서 수행되는, 입력부터의 출력까지의 처리(순방향 처리)를 구현하겠다. 넘파이의 다차원 배열을 사용한다. 3.4.1. 표기법 설명 3.4.2. 각 층의 신호 전달 구현하기 입력층에서 '1층의 첫 번째 뉴런'으로 가는 신호를 보겠다. 편향을 뜻하는 뉴런ⓛ이 추가됐다. 가중치를 곱한 신호 두 개와 편향을 합하면 다음과 같이 계산한다. 여기에서 행렬의 곱을 이용하면 1층의 '가중치 부분'을 간소화할 수 있다. 행렬들은 각각 다음과 같다. 넘파이의 다차원 배열을 사용해서 간소화된 식을 구현해본다. 입력 신호, 가중치, 편향은 적당한 값으로 설정한다. X = np.array([1.0, 0.5]) W1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, .. 2020. 3. 9.
보충) numpy 행렬의 형상 차이 - (N,) (N,1)(1,N) python numpy 라이브러리의 행렬 개념을 공부하다가 의문점이 생겼다. 일반적으로 numpy를 활용해 생성한 2X3 행렬 A의 형상을 알기 위해 A.shape로 프린트 하면 (2, 3)을 반환한다. 그러나 3X1 행렬 B의 형상은 B.shape을 통해 (3,)을 반환한다. 즉, 1이 생략된다는 것이다. stackoverflow에 비슷한 질문이 남겨져 있었고, 답변도 달려 있었다. 알게 된 내용을 추가해서 정리해본다. (N,1)과 (N,)의 형상을 가진 numpy 배열의 차이가 뭔가요? 두 배열 모두 NX1 행렬이지 않나요? 가끔씩 계산 결과가 두 배열 중 하나를 반환해서 여쭤봅니다. 정리하기 앞서, 배열의 차원은 아래와 같다. (사진 출처는 글 하단에 있다) (N,1)과 (N,)은 차원이 다르다. .. 2020. 3. 8.
3-1. 신경망 앞장에서 배운 2. 퍼셉트론 관련해서는 좋은 점과 나쁜 점이 존재한다. 좋은 점은 퍼셉트론으로 복잡한 함수도 표현할 수 있다는 것이다. (ex. 컴퓨터가 수행하는 복잡한 처리도 이론상으로는 퍼셉트론으로 표현 가능하다) 그러나 나쁜 점은 가중치를 설정하는 작업을 여전히 사람이 수동으로 한다는 것이다. 신경망은 이 나쁜 점을 해결해준다. 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력이 신경망의 중요한 성질이다. 3.1. 퍼셉트론에서 신경망으로 3.1.1. 신경망의 예 신경망을 그림으로 나타내면 아래와 같다. 여기서 가장 왼쪽 줄을 입력층, 맨 오른쪽 줄을 출력층, 중간 줄을 은닉층이라고 한다. 은닉층의 뉴런은 (입력층이나 출력층과 달리) 사람 눈에는 보이지 않는다. 그래서 '은닉'이다. .. 2020. 3. 7.
[Python][프로그래머스] 완주하지 못한 선수 - python javascript와 같이 sort()함수를 이용하고자 했다. for문의 동작방식이 javascript와 다르다. 그러나 IndexError: list index out of range 오류가 났다. 원소 개수가 하나 적은 completion 배열은 비교 불가능하다는 것이다. participant 배열의 마지막 요소만 남을 때 비교할 수 없어서 다른 방식을 찾아야 했다. (1차-1과 1차-2는 비슷한 방식이다. 단순메모용) #1차-1 def solution(participant, completion): answer = '' participant.sort() completion.sort() num = 0 for p in participant: if p == completion[num]: num += 1 c.. 2020. 3. 6.
[프로그래머스] 완주하지 못한 선수 - javascript function solution(participant, completion) { var answer = ''; participant.sort(); completion.sort(); for(let i=0; i 2020. 3. 6.