전체 글 64

[컴퓨터 구조] 컴퓨터의 주요 구성요소 5가지

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! 컴퓨터에는 기본적인 function 이 있고, 그 기본을 수행하기 위해 중요한 구성 요소들이 있다. Basic Functions of a Computer 먼저, 컴퓨터의 기본적인 function 을 말하자면 아래와 같다. Input / Output Data Process the Data Store the Data Components of a Computer 컴퓨터의 주요 구성 요소에는 5가지가 있다. 그 다섯 가지는 바로 아래 그림의 요소들 중 Input, Output, Control, Datapath, Memory 이다. 주요 구성 요소들은 하드웨어 기술과 무관하게, 과거부터 현재까지의 모든 컴퓨..

[컴퓨터 구조] High Level Language to the Language of Hardware

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! Instructions 우리가 일반적으로 쓰는 언어는 하드웨어가 이해할 수 없다. 하드웨어가 이해할 수 있는 0과 1로만 이루어진 command를 우리는 Instruction 이라고 부른다. High-Level Language -> Instruction High-Level Language 프로그래머가 좀 더 자연스러운 언어(영어와 대수적 표현) 으로 생각할 수 있도록 도와준다. 개발하는 환경과 다른 환경에서도 잘 작동함. ( 컴파일러와 어셈블러를 통해 모든 하드웨어의 이진 명령으로 번역할 수 있다. ) 어셈블리어, 기계어보다 간결하다. C, Java, C++, Python ... 등 컴파일러를 통해..

[Pytorch] Autograd, 자동 미분 ( requires_grad, backward(), 예시 )

저번 포스팅에선 선형 회귀를 간단히 구현했습니다. 이미 우리는 선형 회귀를 구현할 때 파이토치에서 제공하는 자동 미분(Autograd) 기능을 수행했습니다. ( requiers_grad = True, backward() ) 자동 미분(Autograd) 사용은 해봤지만 이번 포스팅에서는 자동 미분에 대해 좀 더 알아보겠습니다. 신경망을 학습할 때 가장 자주 사용되는 알고리즘은 역전파입니다. 역전파시 매개변수(모델의 가중치, 편향)는 해당 매개변수에 대한 손실 함수의 변화도(gradient)에 따라 조정됐습니다. 변화도를 계산하기 위해 파이토치에는 torch.autograd라고 불리는 자동 미분(Autograd) 엔진이 내장돼 있습니다. 예시 1 import torch 가장 먼저, $w^3 + 10$ 라는 ..

[컴퓨터 구조] Below Your Program(Application Software, System Software, Hardware)

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! Below Your Program 우리는 프로그램을 사용할 줄은 알지만, 내부에서 어떤 일을 하는 지는 모른다. Application Software를 구성하는 코드를 Hardware는 그대로 이해할 수 없다. 따라서 High-Level operations를 Simple Computer Instructions로 번역하는 과정이 필요하다. 프로그램 내에 어떻게 소통이 이뤄지는지 확인해보자. Application Software 우리가 흔히 접하고 사용하는 프로그램( 워드 프로세서, 데이터베이스, 웹 브라우저 등 대부분의 프로그램 )을 말한다. 응용 프로그램(Applications software)은 ..

[컴퓨터 구조] 무어의 법칙이란? (Moore's Law)

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! 고든 무어 무어의 법칙은 인터넷 경제의 3원칙 ( 무어의 법칙, 메트칼프의 법칙, 가치사슬을 지배하는 법칙 ) 중 하나로, 인텔의 창립자 고든 무어(Gordon Moore)가 1965년 발표한 논문의 '글'이 학계와 업계에서 인용되면서 '무어의 법칙'이라는 이름이 붙게 됐다. 무어의 법칙 (Moore's Law) 무어의 법칙은 '반도체의 처리 속도가 두배가 된다.' 이런 뜻이 아니다. 약 18개월~24개월 주기로 칩의 집적도가 약 2배씩 상승한다는 말이다. 즉, 트랜지스터가 두배씩 증가한다. 아래의 그래프를 보면 어느정도 맞다. 우리는 프로젝트를 할 때 종료시점까지 프로젝트가 대략 얼마정도 걸리는지..

[Pytorch] 파이토치, 선형 회귀(Linear Regression) 간단히 구현해보기

이번에는 파이토치로 선형 회귀를 해보겠습니다. 선형 회귀는 주어진 데이터 집합에 대해, 종속 변수와 독립 변수들 사이의 선형 관계를 모델링합니다. 문제 아래 표와 같이 어떤 차량이 이동하는데 1시간 후 70km, 2시간 후 140km, 3시간 후 210km를 이동했다면, 4시간 후에는 몇 km를 이동할지에 대해 예측해봅시다. 이동 시간 (H) 이동 거리 (Km) 1 70 2 140 3 210 4 ? 선형 회귀 위의 식은 독립 변수가 하나 이므로 선형 회귀 모델은 $y = wx + b$ 형태를 갖습니다. ( w는 가중치 b는 편향입니다. ) 본격적으로 위의 문제를 파이토치 코드로 나타내 간단한 선형회귀를 해보겠습니다. 먼저, 필요한 라이브러리를 불러오겠습니다. import torch import torch..

[Pytorch] 파이토치, 텐서(Tensor)란 (텐서 속성, 텐서 초기화)

파이토치에서 텐서(tensor)는 배열, 행렬과 매우 유사한 특수한 자료구조입니다. ( 1차원으로 구성된 값을 벡터, 2차원으로 이루어진 값을 행렬, 그리고 3차원 이상을 텐서로 나눠 부르기도 합니다. 하지만 파이토치에서 type은 모두 torch.Tensor 입니다.) 텐서는 Numpy의 ndarray와 매우 유사하며, GPU나 다른 연산 가속을 위한 하드웨어에서 실행할 수 있다는 장점이 있습니다. 파이토치에서 텐서를 사용해보면서 알아보겠습니다. 이번 포스팅에서는 torch와 numpy를 사용하겠습니다. import torch import numpy as np 텐서 속성 (Attribute) 텐서의 속성은 텐서의 모양(shape), 자료형(datatype) 그리고 어느 장치(device)에 저장되는지 ..

[파이썬] sys.setrecursionlimit() (재귀 최대 깊이 설정)

파이썬으로 재귀를 사용해 문제를 풀 때 특히, DFS, BFS 문제를 풀 때 예시에서 답은 잘 나오는데, 정답 제출을 하면 런타임 에러를 접하게 되는 경우가 있습니다. 대부분이 파이썬의 재귀 최대 깊이의 기본 설정이 1,000회 이기 때문에 런타임 에러가 발생하는 경우입니다. 이런 문제를 해결하기 위해서는 아래와 같이 코드를 작성해주면 됩니다. import sys sys.setrecursionlimit(10 ** 6) 위와 같이 코드의 상단에 sys.setrecursionlimit(10**6)을 작성해주면 재귀의 최대 깊이가 10**6으로 바뀌게 됩니다. ( 필요에 따라 안의 숫자를 설정해주면 됩니다. ) 유의해야할 점이 있습니다. PyPy에서는 sys.setrecursionlimit()으로 임의로 재귀..

파이썬 Python 2021.09.22

[CUDA] 쿠다 프로그램 작성해보기 (.cu 확장자)

이 글은 학부 수업을 들으면서 개인적으로 정리한 글입니다. 잘못된 내용이 있다면 댓글로 말씀 부탁드립니다! 글에 포함된 코드의 개발 환경은 아래와 같습니다. - CUDA : CUDA v11.4 - IDE : Visual Studio 2019 - OS : Windows 10 CUDA 프로젝트 만들기 최근에는 Visual Studio 내에서 CUDA 프로젝트를 손쉽게 만들 수 있습니다. 새 프로젝트 만들기를 선택하고 스크롤을 내려보면 아래 그림과 같이 CUDA 프로젝트를 만들 수 있습니다. (CUDA를 설치해 놓지 않았으면 설치부터 해야합니다.) .CU 확장자 위와 같이 쿠다 프로젝트를 만들면 소스 코드의 확장자 명이 .cu 인 것을 확인할 수 있습니다. 모든 쿠다 프로그램은 확장자 명으로 .cu 를 사용합..

[MySQL] 테이블 열(컬럼) 추가, 삭제 (예시 포함)

MySQL에서 테이블 열을 추가하거나 삭제하기 위한 구문을 알아보겠습니다. 컬럼 추가 먼저 열을 추가하는 구문입니다. alter table 테이블명 add column 컬럼명 타입 옵션 컬럼 삭제 다음은 열을 삭제하는 구문입니다. alter table 테이블명 drop column 컬럼명 예시 위의 구문을 사용해 열을 추가, 삭제해보겠습니다. 위는 수정하기 전 제가 사용할 테이블입니다. 위의 기존 user 테이블에 삭제, 추가 구문을 사용해봅시다. 위의 구문을 입력해 날짜에 관련된 열을 먼저 삭제하고, 취미와 관련된 열을 추가했습니다. 그럼 어떻게 됐는지 보겠습니다. 결과를 확인해보면 mDate 열은 사라지고, hobby 열은 추가돼 NULL 값으로 채워졌습니다. 이전 포스팅(https://kingnam..