목록전체 글 (59)
열심히 코딩 하숭!

08 MNIST를 활용한 숫자 인식 8.1 문제 정의 MNIST 데이터 손글씨 데이터 가로 세로 28 x 28 (pixel) 색의 농도는 0 ~ 225까지 데이터 사용 이미지 한 장은 [1, 28, 28] 형태로 구성되어있음 (맨 처음 1은 이미지의 색을 의미하는 채널의 차원수 - 그니까 2차원의 데이터인데 색이 붙어서 3차원…!!!이 된!!!) 이번 장에서는 1계 텐서 형식으로 입력 데이터를 변환하여 사용 이미지 한 장 → 784개(28 X 28)의 요소를 1차원 배열로 전개 class 0 ~ 9까지의 숫자를 분류 → 총 10개의 class 8.2-8.3 중요 개념 / 신경망과 딥러닝 pass 8.4 활성화 함수와 ReLU 함수 ReLU 함수 x

04 예측 함수 정의하기 4.1 머신러닝 알고리의 전체상과 예측함수 경사 하강법의 구현 개요 예측 계산 → 손실 계산 → 경사 계산 → 파라미터 수정 예측 계산: 입력으로부터 출력을 계산함l 손실 계산: 정답과 출력간의 오차를 계산함 경사 계산: 손실 함수를 미분하여 경사값을 구함 파라미터 수정: 경사값을 활용해 손실을 최소화시키는 W와 B를 반복 수정함 예측 함수 구성 레이어 함수 여러 층을 조합해서 예측 함수를 구성한다 레이어 함수: 선형 함수, ReLU 함수 등 4.2 신경망의 개념과 파이토치 프로그래밍 모델의 관계 신경망과 파이토치 프로그램의 대응 관계 💡 헷갈리는 부분: 선형 함수의 자리와 비선형 함수의 자리가 고정되어야 하는지? 선형 함수 자리에는 무조건 선형 함수만 와야하나!!? 아니다! 컨..

3. 처음 시작하는 머신러닝 3.3~4 경사 하강법 이해하기 1) 경사 하강법 가장 작은 손실(최솟값)을 구하기 위해 손실의 경사(기울기)를 따라서 파라미터 값을 수정해 나가며 효율적으로 손실이 최소가 되는 지점을 구하는 방법 예측 계산: 예측값 Yp를 구한다 (W, B 값의 변화에 따라 예측값도 변한다) 손실 계산: Yp와 Y의 차이를 구한다 (평균 제곱 오차 MSE) 경사 계산: 예측 함수를 구성하는 W, B의 값을 조금씩 바꿔가며, 그때 변화한 손실의 정도를 살펴본다 파라미터 수정: 경삿값에 작은 정수(학습률) Ir을 곱해서, 그 값만큼 W와 B를 동시에 줄여나간다 3.4~12 경사 하강법 구현하기 1) 데이터 전처리 | 데이터 변환 | 예측 계산 # 샘플 데이터 선언 sampleData1 = np..

2. 파이토치의 기본 기능 2.2 텐서 1) 텐서(Tensor)의 개념 파이토치에의 고유 클래스로, 데이터를 표현한다 파이토치의 연산 대상 데이터는 모두 Tensor라는 고유의 형식으로 되어있어야 한다 0계 텐서(스칼라) / 1계 텐서(벡터), 2계 텐서(행렬) 2) 다양한 계수의 텐서 만들기 torch.tensor (값 대입) 뒤에 float을 붙여 강제로 float32로 변환하기 (대부분의 계산에 dtype=float32를 사용한다) (그렇지 않으면 float64로 설정되고 이는 nn.Linear 같은 부분에서 에러를 발생시킨다) r0 = torch.tensor(1.0).float() tensor 확인 print(type(r0)) # 변수 자체의 타입 확인 print(r0.dtype) # 텐서 내의 ..

차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍 | 위키북스 3월달부터 개발 동아리에 들어가게 되었다! 현재까지 동아리 부원들과 함께 딥러닝 스터디를 진행하고 있다 스터디에서 " 차근차근 실습하며 배우는 파이토치 딥러닝 프로그래밍" 교재를 활용하여 공부하고 있기 때문에 이에 대해 정리한 개념을 티스토리에 남기려고 한다~🙉 0. 기본적인 동작 구조 ⇒ 딥러닝 기본 구조: 실제값과 예측값의 차이인 오차를 최소로 만들기 위해 손실 함수를 최소화하는 모델 파라미터를 경사 하강법을 토대로 수정해나간다 ⇒ 파이토치: 위에서 말한 동작 구조를 다음과 같은 함수를 사용해 구현한다 💡 함수명이 새로워서 그런지, 딥러닝을 처음 공부하는 것이 아닌데 생소하게 느껴짐 어느정도 공부한 후에 해당 그림을 다시 살펴보는 것으로..

문제 풀이 처음에는 list에 각 색종이의 왼쪽아래 꼭지점 좌표 정보를 [a, b] 형태로 저장하고 겹친 부분을 구했는데 넓이가 마이너스 값이 나왔다~ 알고보니 색종이가 3개 이상씩 겹치는 걸 계산 안 해줬던... 이런~ ^^ 그래서 겹치는 문제를 해결하기 위해 100 X 100 행렬을 만들어서 도화지를 100 X 100 픽셀이라고 생각하고 계산해주었다. paper = [[0 for _ in range(100)] for _ in range(100)] T = int(input()) for i in range(T): a, b = map(int, input().split(' ')) for j in range(a-1, a+9): for k in range(b-1, b+9): paper[j][k] = 1 area..

https://www.acmicpc.net/problem/2470 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net #include #include using namespace std; pair arr[100000]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; int num; for (int i = 0; i > num; i..

https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 숫자 카드를 입력받고 주어진 숫자가 숫자 카드 내에 있는 숫자인지 검사하는 문제. 주어진 숫자들의 범위를 보아하니... 최대한 시간을 단축할 수 있도록 문제를 풀어야겠다고 생각했다. 풀이 첫번째는 시간 초과로 실패하고, 다른 방법으로 다시 도전했을 때 성공했다. 우선 성공한 코드부터 설명하자면, 먼저 숫자 카드를 오름차순으로 정렬하고, 이분검색 (Binary Sear..

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 C++의 배열 정렬 함수 sort를 이용하고, compare 함수를 선언해서 문제에 맞는 조건을 적용시켜줬다. #include #include #include using namespace std; bool compare(const pair &a, const pair& b) { if (a.second.first == b.second.first) { return a.first < b.first; } ..

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 풀이 경우를 생각하여 계산해주었다. 만약 N이 5로 나누어 떨어지는 게 아니라면 계속 3으로 빼주고 5로 나누어 떨어지는 순간이 올 때 호다닥 5로 빼준다. 근데 DP로도 풀어볼 수 있을 것 같은데, DP 식 짜는 게 아직 익숙하지 않고 넘 어렵다... 그래서 DP로 짜는 방법은 블로그를 참고하여 풀었다. #include using namespace std; int main() { ios_base::sync..