전체 글
-
1. 인공지능과 기계학습, 그리고 딥러닝Deep Learning/Fundamentals 2020. 2. 5. 01:08
인공지능? 기계학습? 딥러닝? 우리는 지금 딥러닝에 기반이 되는 이론들을 함께 정리해나가고자 하고 있다. 그런데 딥러닝이 무엇인지 정확히 알고 있는가? 그렇다면 인공지능과 기계학습은 무엇이고 딥러닝과 어떻게 다른 것인지 구분할 수 있는가? 그렇다. 무엇이든 공부를 시작하기 위해서는 용어에 대한 개념을 먼저 확실히 세워야한다. 인공지능 (Artificial Intelligence) 다음의 두 문제를 풀어보고 두 문제가 서로 어떻게 다른지 생각해보자. 1. 아래의 문장을 읽어보자. 읽으면서 문장에서 F가 몇번 나오는지 세려보자. (단, 한번에 세려야하며, 뒤로 돌아가서 다시 세릴 수 없다.) FINISHED FILES ARE THE RESULT OF YEARS OF SCIENTIFIC STUDY COMBIN..
-
Ubuntu 18.04 듀얼 부팅 설치개발 환경 구축 2020. 2. 4. 21:17
0. 우분투가 필요했던 이유 이때까지 딥러닝을 공부하면서 1)환경설정의 어려움과 2)좋은 성능의 그래픽카드를 가지고 있지 않아서 구글의 Colaboratory를 사용하여 모델을 만들어보고 학습시켜왔었다. 하지만 공부하는 주제가 점점 더 어려워지고 모델이 복잡해짐에 따라 Colaboratory에서 기본적으로 주어지는 사용시간으로는 학습 시간이 모자라기 시작했다. 따라서 그래도 그래픽카드(nvidia mx150)가 있는 필자의 노트북에서 로컬로 학습을 돌리기 위하여 여러 방법들을 시도해보았지만, 윈도우 상에서 anaconda, CUDA, cuDNN등의 설정을 완벽히 하기에는 우분투나 맥에서의 자료들보다 오래된 자료들이 많았고, 그 수도 훨씬 적었다. 로컬의 gpu를 사용하기 위한 정보를 찾던 중, 리눅스 환..
-
0. 딥러닝 첫 걸음Deep Learning/Fundamentals 2020. 2. 4. 17:43
점점 쉬워지는 딥러닝 최근 몇년 사이 딥러닝에 대한 전세계의 관심이 점점 더 높아져 가고, 그 이상으로 딥러닝 기술들이 발전해감에 따라서 딥러닝을 배우고자 하는 사람의 수도 많아지고 있다. 이러한 수요에 맞추어 딥러닝 관련 파이썬 라이브러리들의 사용법이 쉬워지고 있다. 가장 대표적인 딥러닝 프레임워크인 Tensorflow만 보아도, 필자가 처음 딥러닝을 공부하기 시작했던 1년 전과는 다르게 라이브러리 전체가 고수준화, 직관화되어 장황하고 추상적이었던 코드들이 간략하게 탈바꿈하였다. 또한 구글의 Colaboratory와 같은 사용하기 쉬운 클라우드 서비스가 대중화됨에 따라 처음 접하는 사람들이 공부를 시작하기 위한 절차가 매우 간소화되었다. Tensorflow vs Pytorch Tensorflow와 Py..
-
5. 포인터Programming Language/C 2020. 1. 31. 17:10
포인터(poitner)는 C언어의 가장 대표적인 특징 중 하나로, 일반 변수의 메모리 주소를 값으로 가지는 변수이다. 포인터를 사용하면 변수명을 통하지 않고도 사용하고자 하는 대상에 직접 접근할 수 있어 프로그램이 간결하고 효율적으로 제어된다. 포인터 변수는 (자료형) * (변수명); 과 같이 선언된다. *은 (변수명)이 포인터 변수임을 표시하고, (자료형)은 포인터 변수인 (변수명)에 저장될 주소에 저장될 데이터의 유형을 지정한다. 예를 들어 int * ptr; 이라는 문장은 정수형(int)의 자료를 담을 주소를 저장할 포인터 변수 ptr을 선언하는 문장이다. #include int main(void) { int a = 10; int *p = &a; printf("a의 주소 : %p \n", p); p..
-
4. 배열과 문자열Programming Language/C 2020. 1. 31. 16:59
배열 배열(array)은 동일한 종류의 데이터를 일련의 구조화된 집단으로 메모리에 구성한 것이다. 즉, 동일한 자료형을 동시에 여러 개 선언할 때 배열을 사용한다. int a[10]; 과 같이 선언된 배열 a가 있다고 하자. 이 문장은 int형의 변수 10개를 동시에 선언한 것으로, 배열명은 a이고 원소는 10개라는 의미이다. int형은 일반적으로 4바이트의 크기를 가지므로, a[0]부터 a[9]까지 10개의 정수를 수용할 수 있는 메모리 40바이트가 연속적으로 할당된다. 문자와 아스키코드 #include int main(void) { int a = 65; char b = 65; printf("%c %c", a, b); return 0; } A A C언어는 문자를 아스키코드의 숫자로써 인식하기 때문에, ..
-
-
2. 버퍼와 getchar()Programming Language/C 2020. 1. 31. 16:07
지난 글에서 다룬 입출력 함수의 복습을 위해 간단한 예제를 풀어봅시다. 다음 예시의 형식에 맞추어 정수 하나와 알파벳 하나를 순서대로 입력받고, 출력하여라. input : 10 input : A number : 10 character : A 문제에서 정수 하나와 문자 하나를 입력 받기위한 공간이 필요하므로 `int`형 변수와 `char`형 변수를 하나씩 선언해야 할 것입니다. 그리고 문제에서 나온 순서대로 `scanf()`함수를 통해 입력받고, `printf()`함수를 통해 출력하면 될 것 같아보입니다. 그러면 코드를 작성해봅시다. #include int main(void) { int number; char character; printf("input : "); scanf("%d", &number); p..
-
1. 자료형과 표준 입출력 함수Programming Language/C 2020. 1. 31. 15:40
C언어의 자료형 자료형(type)이란, 변수의 형태를 의미합니다. 변수(는 어떤 값을 저장하는 메모리 상의 공간입니다. C언어에는 다양한 자료형이 존재하지만, 문제를 풀 때 가장 많이 나오는 꼭 필요한 자료형 3가지만 소개하도록 하겠습니다. 자료형 형태 입출력 형식 char 문자형 %c int 정수형 %d double 부동소수점형 %lf printf() 함수 printf("출력형식", 변수); `printf()`함수는 C언어의 대표적인 출력함수입니다. 앞으로 C언어를 공부하고 문제를 풀면서 가장 빈번하게 사용할 함수 중 하나입니다. 기본적으로 `printf("출력형식", 변수);`와 같은 형식으로 사용할 수 있습니다. scanf() 함수 scanf(“입력형식”, &변수); `scanf()`함수는 C언어의..