본문 바로가기

공부

Deep Learning Cookbook을 따라해보자 본 포스트는 (주)느린생각으로부터 후원을 받아 작성한 글입니다. 다만 책만 받았을 뿐, 실제 저의 삽질일 들어감은 변하지 않음을 알립니다. 판매처 : http://www.yes24.com/24/goods/68385763?scode=032&OzSrank=1 본 책에서의 예제를 따라하기 위해서 아나콘다, 쥬피터 노트북을 사용할 수도 있다. 하지만 그러면 따라하는 것 이상의 의미를 지니지 못한다고 생각한다. 나는 Visual Studio에서 개발환경을 세팅(tensorflow-gpu && anaconda3)하여 따라해 보았다. 만약 나와 같은 길을 따르게 된다면, 따라하는 도중 생긴 수많은 경고와 에러들을 해결하면서 자연스럽게 코드도 이해가 되지 않을까 조심스럽게 생각을 해 본다. 지금부터는 위 링크대로 개발..
C 언어 - linked list search 예제 search 알고리즘이 아님. 1234567891011121314151617181920void search_song(char* artist, char *title) { Artist *prt_artist = find_artist(artist); if (prt_artist == NULL) { printf("No such artist exists\n"); return; } SNode *ptr_snode = prt_artist->head; while (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) next; // ptr_snode->next if (ptr_snode != NULL && strcmp(ptr_snode->song->title, title) ..
C 언어 - linked list에서 node를 추가할 때 예외처리 노드를 추가하는 경우 이 linked list가 어떤 형태를 취하고 있느냐에 따라서 달라진다. 우선, 단일 linked list의 경우 123456789101112131415161718192021Artist* add_artist(char *name) { Artist *ptr_artist = create_artist_instance(name); Artist *p = artist_directory[(unsigned char)name[0]];// first node Artist *q = NULL; while (p != NULL && strcmp(p->name, name) next; } if (p == NULL && q == NULL) // unique node artist_directory[(unsigned ..
C 언어 - 파일을 load 할 때 주의할 점 C 언어 프로젝트를 하면서 어떤 저장된 파일을 불러올 경우 주의할 점이다. Kim#He was idiot#C:\\DocumentTim#He was not#D:\\FileTina#She was pretty#C:\\Picture 이렇게 되어 있었던 경우라고 하고 #을 기준으로 tokenizing을 한다고 가정한다. 123456789101112void load(FILE *fp) { char buffer[BUFFER_LENGTH]; char *name, *title, *path, *context; while (1) { if (read_line(stdin, buffer, BUFFER_LENGTH)
C 언어 형 변환(캐스팅)시 주의할 점 예를 들어서 11001111이라는 char 형의 데이터가 있다고 하자. 그런데 아스키 코드에 있는 영어만 사용할 것이 아니고 한글을 사용하고 싶은 경우가 있을 수 있다. 참고로 한글은 '가'라는 한 글자를 표현하기 위해서 2바이트를 필요로 하고, 이 문자가 존재하는 영역은 128을 넘어가는 범위에 있다고 한다. 그래서 한글을 쓰기 위해서는 unsigned char을 사용해야 하는데, 어쨋건 char형을 unsigned char 형으로 변환해야 하는 일이 생길 수 있다. 앞서 말한 11001111라는 char형 문자가 있다고 했을 때, 이를 int로 강제 형변환을 시키면 어떻게 될까? 11001111 -> 00000000000000000000000011001111이렇게?? 이게 아니다!!!111111111..
C 언어 프로젝트 - 하기 전에 주의해야 할 점 프로그램의 크기가 커지다 보면 파일들을 나누게 되고, 당연히 헤더 파일들이 필요해진다. 위 사진과 같이 헤더 파일을 include하면 그 헤더를 통째로 가져오게 된다. 위에서 add_song이라는 함수는 실제 main문에는 없지만 include한 library.c에 있기에 오류 없이 넘어갈 수 있다. 이후에 이 main문에 있는 add_song과 library.c에 있는 add_song을 연결시켜주는 건 linker가 해주는데 일단은 넘어가자. 헤더 파일에 적힐(공유할) 내용들은 매크로, type정의 / 함수 / 변수 들이다. 가장 까다로운 것이 변수인데, 헤더 파일에 a라는 변수를 선언하고, 이를 include하고 있는 다수의 소스들이 이 변수를 변경하면 혼란이 발생한다. 그렇다고 해서 다시 정의하자니..
mbed os - 간단한 프로젝트 mbed -cli를 설치하기 위해서는?? 메뉴얼을 따라하면 된다. 그 와중에서 생기는 문제들에 대해서는 전에 포스트를 하였는데, 기복적으로 지금 포스트를 하는 상황에서 나의 개발환경은 다음과 같다. 윈도우 10mbed 1.8.3GNU Embedded Toolchain for Arm 2018-q4-major파이썬 3.6.6TARGET=DISCO_L475VG_IOT01A 따라서 나의 예제를 그대로 누군가 따라하고 싶다고 하면, 일단 mbed-cli가 설치되어 있고, 컴파일러가 설치되어 있어야 하며, 것이지만 컴파일을 하는 데에 문제가 없어야 한다. 그런데 어떤 예제가 있어야 컴파일에 문제가 있는지 알 수 있을 것이다. 간단하게 보드 안에 내장된 led를 키고 끄는 작업을 하는 예제를 돌려볼 것이다. 작업을 ..
SLAM 공부했다 - (2) 코드로 넘어가기 전에 이전 내용을 복습하는 차원에서 matrix를 fill-in하는 실습을 다시 한 번 해보자. 문제를 풀면서 이런 생각이 들 수가 있다. "그럼 계속해서 움직이고, Landmark들이 계속 늘어나는 상황이면 행렬이 엄청나게 커질 텐데 프로세서가 버틸 수 있을까??" 그래서 이번에는 이에 대한 해결책을 제시한다. Online-SLAM!!! 상황에 따라 다르지만, 사실상 계속해서 motion/ measurement를 시행하면서 이 모든 data가 필요한 것은 아니다.로봇에 달린 프로세서에게 부담을 주기도 싫고, 사실상 내가 필요한 것은 가장 최신의 정보들과만 관련이 있다!! 라고 한다면 이 Online SLAM이 적합하다. Landmark들은 언제 또 지날지 모르니까 버릴 수 없고, 가장 ..