전체 글(63)
-
history 유지하며 여러 git repo 합치기
레퍼지토리가 불필요하게 나뉘어져있을 때 합치는 과정을 살펴보겠습니다. 먼저 새로운 레퍼지토리를 생성합니다. 해당 레퍼지토리를 clone 한 후 해당 폴더로 이동합니다. git clone git subtree add ==prefix= 을 입력합니다. 그 후 해당 폴더를 commit 한 후 push 하면 다음과 같이 복제된 것을 확인할 수 있습니다. 남아있는 레퍼지토리는 가차없이 삭제합니다.
2020.10.28 -
[DL] 02. CNN 구조 이해하기
이번에는 이미지 분류에 주로 사용되는 CNN에 대해 알아보겠습니다. CNN은 이미지 분류, 이미지에 잡음 제거, 글자 인식(OCR) 등에 주로 사용됩니다. FNN으로 이미지를 분류하기에는 한계가 존재합니다. 픽셀 값이 많고 컬러가 들어가는 복잡한 구조들은 최소 3개의 층으로 구성되어야하기 때문에 데이터의 사이즈가 커지면서 층이 깊어지고 파라미터들이 증가하게 됩니다. 데이터 샘플 수가 적은데 파라미터 수가 많아지면 주어진 데이터에 대해 오버피팅이 일어날 수 있습니다. 그렇다면 데이터의 샘플 수가 많으면 되지 않나? 라고 생각하실 수 있으실텐데요. 데이터의 샘플 수가 많아지면 여러기법을 적용할 수 있어서 좋긴 하지만 메모리를 많이 먹고 오래거립니다. 또한 FNN은 전체적인 특성을 고려할 때는 좋지만 이미지와..
2020.10.27 -
[Algorithm] 스택/큐?
이번에는 스택과 큐에 대해 알아보도록 하겠습니다. 스택/큐 스택과 큐는 메모리 안에 데이터들을 효율적으로 관리하게 도와주는 처리 방식입니다. 스택 스택은 한국말로 쌓아 올리다라는 말로 스택이라는 자료 구조 안에 데이터를 쌓아올리는 방식입니다. LIFO(Last In First Out)방식으로 처음 들어온 데이터가 맨 마지막에 나가는 구조입니다. 대표적으로 스택을 구현하는 방법은 정적인 1차원 배열로 하는 방식과 동적인 리스트를 이용한 배열이 있습니다. 정적인 1차원 배열로 구현하면 구현하기는 쉬우나 input size를 미리 알아야한다는 단점이 존재하고 동적인 리스트를 이용한 배열로 구현하면 정적인 1차원 배열에 비해 구현하기 어렵지만 input size에 제한이 없다는 장점이 있습니다. 스택 주요 기능..
2020.10.26 -
[Algorithm] Hash?
Hash hash란 단방향 암호화 기법으로 hash 함수를 이용하여 고정된 길이의 암호화된 문자열로 바꾸는 것으로 즉시 저장하거나 찾고자 하는 위치를 참조할 수 있어 빠른 속도로 문제를 처리할 수 있습니다. 예를 들어 어떤 한 가게에서 손님이 물건을 사러 왔을 때 물건의 가격이 적혀져있는 장부를 찾아서 가격을 봐야한다고 가정할 때, 만약 장부가 정렬되어 있지 않다면 O(n)만큼의 시간, 정렬되어 있다면 O(log(n))만큼의 시간이 소요될 것 입니다. 이때 필요한 것은 가격을 외우고 있는 사람이 옆에 있는 것인데 hash 함수가 이 역할을 합니다. hash함수(hash 알고리즘) 정의 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 입력으로 key를 받아 0부터 배열의 크기-1 사이의 값을 ..
2020.10.09 -
[DL] 01. 딥러닝의 기초 개념 이해하기
이번 포스팅은 딥러닝에 대해 다뤄보고자 합니다. 딥러닝 개요 딥러닝은 4차 산업혁명의 핵심기술로 부각되고 있고 AI(Artificail intelligence)라는 용어로 자주 쓰이고 있습니다. 딥러닝은 1980년대에 붐을 일으켰지만 하드웨어가 모델을 따라가지 못하여 잠깐 주춤했고 최근 컴퓨터의 성능이 좋아지면서 복잡한 모델을 다룰 수 있는 환경이 마련되었습니다. 딥러닝이 나온 배경은 사람이 어떤 신경 세포들로부터 자극을 받아 대뇌로 전달한 후 사람이 인지하는 과정을 묘사하여 모델로 만든 것입니다. 정확한 메커니즘이 구현된 것은 아니지만 신경 세포들이 감각을 모으고 축삭돌기로 전달되면서 인지할 수 있는 신호로 바뀐다는 개념을 컴퓨터에 적용한 것이 인공신경망 모델입니다. 어떤 input data가 들어오면..
2020.06.20 -
[비정형 데이터] 09. 신호데이터의 추세 제거하기
신호 데이터에서 주기나 피크를 분석할 때는 추세를 제거해야하는 경우도 있습니다. 추세가 있으면 피크가 아님에도 높은 값에 위치하거나 낮은 값에 위치하는 값을 피크라고 판단할 수도 있기 때문입니다. 추세는 pracma 패키지의 detrend함수를 통해 제거할 수 있습니다. detrend(data, tt=추세제거 방법, bp=c(몇 개로 잘라서 볼 것인가)) tt=linear: 선형의 추세 제거 tt=constant: 구간을 나누어 그 구간의 평균점을 찾고 해당 평균점을 빼면서 추세 제거 t = 0:20 x = 3*sin(t)+t # 증가하는 추세를 만들기 위해 t를 더함 y = pracma::detrend(x,tt='linear',bp=c()) # 1차원의 추세만 제거 가능(다차원 추세 안됨) plot(t..
2020.05.04