전체 글
-
프로그래머스 고득점 kit(유형정리) - 위장Algorithm/Hash 2023. 1. 24. 17:34
코딩테스트 연습 - 위장 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로..
-
프로그래머스 고득점 kit(유형정리) - 전화번호 목록Algorithm/Hash 2023. 1. 24. 16:43
코딩테스트 연습 - 전화번호 목록 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 ..
-
4. 오차역전파법(2)AI 모델(딥러닝 기초)/4. 오차역전파법 2023. 1. 24. 11:19
이제 계산 그래프 이론으로만 이해했던 오차역전파법을 직접 구현해 볼 차례이다. ※ 덧셈 노드 계층 class AddLayer: def __init__(self): pass def forward(self, x, y): out = x + y return out def backward(self, dout): dx = dout * 1 dy = dout * 1 return dx, dy AddLayer라는 Class 형태로 덧셈 노드 계층을 구현할 수 있다. 순전파는 그대로를 보내고, 역전파도 그대로 아무것도 하지 않고 출력시키면 되기 때문에 초기화를 pass 시켰고, 순전파와 역전파 역시 우리가 오차역전파법(1)에서 그림으로 보았던 것처럼 그대로 출력을 시켜 주었다. ※ 곱셈 노드 계층 class MulLayer..
-
프로그래머스 고득점 kit(유형정리) - 완주하지 못한 선수Algorithm/Hash 2023. 1. 23. 11:31
코딩테스트 연습 - 완주하지 못한 선수 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 ..
-
프로그래머스 고득점 kit(유형정리) - 폰켓몬Algorithm/Hash 2023. 1. 23. 10:51
코딩테스트 연습 - 폰켓몬 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]..
-
4. 오차역전파법(1)AI 모델(딥러닝 기초)/4. 오차역전파법 2023. 1. 20. 15:57
※ 오차역전파법(backpropagation) - 가중치 매개변수의 기울기를 효율적으로 계산하는 방법 1. 수식을 통한 설명 2. 계산 그래프를 통한 설명 ※ 계산 그래프 - 자료구조 Graph를 이용하여 노드와 에지를 사용하여 표현 순전파 : 계산 그래프(왼쪽 -> 오른쪽) 역전파 : 계산 그래프(오른쪽 -> 왼쪽) ■ 국소적 계산 - 전체에서 벌어지는 일과 상관없이 자신과 관계된 정보만으로 결과 출력이 가능함. - 중간 계산 결과를 모두 보관할 수 있음. - 역전파를 통해 '미분'을 효율적으로 계산 할 수 있음. 공부를 하는 교재의 그림을 참고하여 설명을 해보겠다. 순전파를 통해서 100원짜리 사과 2개를 산 후 소비세 10%가 붙을 때 지출하는 금액을 나타낼 수 있었다. 이를 역전파를 통해서 살펴보..
-
3. 신경망 학습(7)AI 모델(딥러닝 기초)/3. 신경망 학습 2023. 1. 15. 11:45
※ 미니배치 학습 구현 신경망 학습(6)을 통해 구현해 둔 TwoLayerNet class를 사용하여 MNIST 데이터셋을 미니배치로 구현해 보자. import numpy as np from dataset.mnist import load_mnist from two_layer_net import TwoLayerNet import matplotlib.pylab as plt # 데이터 읽기 (x_train, t_train), (x_test, t_test) = load_mnist(normalize=True, one_hot_label=True) network = TwoLayerNet(input_size=784, hidden_size=50, output_size=10) # 하이퍼파라미터 iters_num = 100..
-
3. 신경망 학습(6)AI 모델(딥러닝 기초)/3. 신경망 학습 2023. 1. 15. 10:56
전반적인 신경망에 대한 공부와 신경망학습에 대한 공부를 진행한 상태이기 때문에 간단한 2층 신경망의 학습 알고리즘을 구현해보자. ※ 신경망 학습의 기본단계 1. 미니배치 - 훈련 데이터 중 일부를 무작위로 가져와서 선별한 데이터, 미니배치의 손실함수를 줄이는 것이 최종 목표 2. 기울기 산출 - 각 가중치 매개변수의 기울기를 구하여 손실함수의 값을 가장 작게 하는 방향으로 손실함수를 줄인다.(최적값 찾기) 3. 매개변수 갱신 - 가중치 매개변수를 기울기 방향으로 조금씩 갱신한다. 4. 반복 - 1~3 과정을 계속해서 반복한다.(최적값을 구할 때까지, 즉 손실함수가 가장 작을 때 까지) ■ 확률적 경사 하강법 : 미니배치로 무작위로 골라낸 데이터에 대해 경사하강법으로 매개변수를 갱신하는 방법. 딥러닝 프레..