목록소프트웨어 (41)
julia coding story

이 손실 함수의 결과값을 가장 작게 만드는 가중치 매개변수를 어떻게 찾을까? -> 함수의 기울기를 활용하는 경사법 * 학습: 훈련 데이터로 부터 가중치 매개변수의 최적값을 자동으로 획득하는 것 * 손실 함수 : 신경망이 학습 할 수 있도록 해주는 지표인 함수 데이터에서 학습한다 - 신경망은 데이터를 보고 학습 할 수 있음 - 가중치 매개변수의 값을 데이터를 보고 자동으로 결정함 - 직선도 분리할 수 있는 문제라면 데이터로부터 자동으로 학습 가능함. 선형 분리 가능 문제는 유한 번의 학습을 통해 풀 수 있다는 사실이 퍼셉트론 수렴 정리로 증명됨. BUT, 비선형 문제는 자동으로 학습할 수 없음 데이터 주도 학습 - 기계학습 : 데이터에서 답을 찾고 데이터에서 패턴을 발견하고 데이터로 이야기를 만드는 것 :..

손글씨 숫자 인식 - 이미 학습된 매개변수를 사용하여 학습 과정은 생략하고, 추론 과정만 구현할 예정 - 순전파(forward propagation) : 추론 과정 = 학습한 매개변수를 사용하여 입력데이터를 분류함 1. MNIST 데이터셋 - MNIST : 기계 학습 분야에서 아주 유명한 데이터셋, 손글씨 숫자 이미지 집합,실험용 데이터 1.1 MNIST 데이터셋 다운로드 - 데이터셋 다운로드 링크 : https://github.com/WegraLee/deep-learning-from-scratch GitHub - oreilly-japan/deep-learning-from-scratch: 『ゼロから作る Deep Learning』(O'Reilly Japan, 2016) 『ゼロから作る Deep Learnin..

3층 신경망 구현하기 - W 오른쪽 아래의 인덱스 번호는 '다음 층 번호, 앞 층 번호' 순으로 적음 1. 각 층의 신호 전달 구현하기 단계 1 : 0층에서 1층으로 ▶단계 1 Python으로 구현하기 import numpy as np X = np.array([1.0,0.5]) W1 = np.array([[0.1,0.3,0.5],[0.2,0.4,0.6]]) B1 = np.array([0.1,0.2,0.3]) print(W1.shape) print(X.shape) print(B1.shape) A1 = np.dot(X,W1) + B1 #그림1을 식으로 구현 print(A1) ''' 출력 (2, 3) (2,) (3,) [0.3 0.7 1.1] ''' 단계 2 : 0층에서 1층으로 - 은닉층에서의 가중치 합(가..

1. 다차원 배열의 계산 1.1 다차원 배열 - 다차원 배열은 '숫자의 집합' ▶1차원 import numpy as np A = np.array([1,2,3,4]) print(A) np.ndim(A)#배열의 차원수 #출력 : 1 A.shape#배열의 형상 인덱스, 튜플을 반환해야함 why? 다차원 배열일 때와 통일된 형태로 결과를 반환하기 위함 # 출력 : (4,) A.shape[0] #출력 : 4 ▶2차원 - B는 3 x 2 배열 - 2차원 배열은 행렬이라고 부름 - 배열의 가로 방향으로 행, 세로 방향으로 열이라고 함 1.1 행렬의 곱 - A의 1행과 B의 열을 곱한 값은 행렬의 1행 1번째 원소가 되고, A의 2행과 B의 1열을 곱한 결과는 2행 1번째 원소가 된다. ▶ 행렬 곱 by Python ..
유지보수성 - 소프트웨어 비용의 대부분은 유지보수 비용임 - 버그 수정, 시스템 운영 유지, 장애 조사, 새로운 플랫폼 적응, 새 사용 사례를 위한 변경, 기술 채무 상환, 새로운 기능 추가 등 - 레거시 시스템을 다루지 않기 위해 주의를 기울여야할 소프트웨어 설계 원칙 : 운용성, 단순성, 발전성 1. 운용성(operability) : 운영의 편리함 만들기 - 운영팀이 시스템을 원활하게 운영할 수 있게 쉽게 만들어라 - 자동화 할 것들은 자동화 시켜야함 - 운영팀에서 하는 작업들 : 1) 시스템 상태를 모니터링하고 상태가 좋지 않다면 빠르게 서비스를 복원 2) 시스템 장애, 성능 저하 등의 문제의 원인을 추적 3) 보안 패치를 포함해 소프트웨어와 플랫폼을 최신 상태로 유지 4) 다른 시스템이 서로 어떻..
확장성 - 부하 증가에 대처하는 시스템 능력을 설명하는 데 사용하는 용어 - 우리는 확장성에 대해 "시스템이 특정 방식으로 커지면 이에 대해 어떻게 대처할 것 인가? 와 "추가 부하를 다루기 위해 계산 자원을 어떻게 투입할까?" 질문을 던져야 한다. 1. 부하 기술하기 - 부하 매개변수(load parameter) : 몇개의 숫자로 나타냄 - 부하 매개변수로 웹 서버의 초당 요청 수, 데이터베이스의 읽기 대 쓰기 비율, 대화방의 동시 활성 사용자, 캐시 적중률 등 이 있음 ▶ 트위터 - 트웟 작성 : 작성자는 팔로워에게 새로운 메시지를 게시할 수 있음 - 홈 타임라인 : 사용자는 팔로우한 사람이 작성한 트윗을 볼 수 있다. - 작동 방식 : 1) 트윗 작성은 새로운 트윗을 트윗 전역 컬렉션에 삽입한다. ..

인터넷은 잘 동작하고 있어서 대부분의 사람들은 인공의 무언가라기보다 태평양 같은 천연 자원으로 생각한다. 이런 규모의 기술이 이토록 오류가 없었던 적은 언제가 마지막일까? - 앨런 케이, Dr. Dobbs 저널 인터뷰에서(2012) 오늘날의 애플리케이션 - 계산 중심(compute-intensive)(과거) -> 데이터 중심(data-intensive) - 애플리케이션을 제한 하는 요소 : CPU 성능 (과거) -> 데이터 양, 데이터의 복잡도, 데이터의 변화 속도 데이터 중심 표준 구성 요소 (standard building block) - 데이터 베이스 : 구동 애플리케이션이나 다른 애플리케이션에서 나중에 다시 데이터를 찾을 수 있게 데이터를 저장 - 캐시 : 읽기 속도 향상을 위해 값비싼 수행 결과..

▶ 시도 1 => 실패 - 걍 무식하게 한번 해봄, 역시나 시간 초과나옴 개킹받음, 무식의 결과는 시간초과인가 - 생각하기 싫은데 그냥 머리를 돌려야할듯 - 이미 저거 100이 넘어가면 돌렸을 때 뭐 나오는거 하는데도 시간 엄청 걸림 - 그냥 규칙이나 있을 까 싶어서 1부터 값을 넣어서 돌려서 나오는 값들 분석해봄 import sys N = int(input()) a = [1] for i in range(N-1): k = 1 a_l = len(a) while k 실패 - 뭔가 규칙성이 나와서 해봤음 5번 이상 부터 3*2^(n-4) - (2(N-6) + 1) 이라는 규칙을 찾았는데 틀렸다고 나옴 - 뭔가 예외가 있는듯 규칙성 찾는게 아닌가? - 1001과 0110이 반복함 그것을 A, B로 새워서 해보면..