본문 바로가기

전체 글

(594)
Debug mode, Release mode, Assert Debug mode 와 Release mode -Visual studio에서 Complie 모드로는 debug 모드와 Release 모드로 나눌 수 있다. - debug 모드 : 실행 파일에 디버그와 관련된 디버깅 정보를 삽입하여 디버깅을 효율적으로 할 수 있도록 도와준다. 프로젝 gatsbyv.tistory.com 85.21 assert 사용하기 assert 매크로는 assert.h 헤더 파일에 정의되어 있으며 정해진 조건에 맞지 않을 때 프로그램을 중단합니다. 즉, assert에 지정한 조건식이 거짓(false)일 때 프로그램을 중단하며 참(true)일 때는 프로그램이 계속 실행합니다. assert(표현식) 단, NDEBUG 매크로가 정의되어 있으면 assert는 무시됩니다. 그러므로 Visual S..
크로스 컴파일(cross compile) 크로스 컴파일러(cross compiler)는 컴파일러가 실행되는 플랫폼이 아닌 다른 플랫폼에서 실행 가능한 코드를 생성할 수 있는 컴파일러이다. 크로스 컴파일러 툴은 임베디드 시스템 혹은 여러 플랫폼에서 실행파일을 생성하는데 사용된다. 이것은 운영 체제를 지원하지 않는 마이크로컨트롤러와 같이 컴파일이 실현 불가능한 플랫폼에 컴파일하는데 사용된다. 이것은 시스템이 사용하는데 하나 이상의 플랫폼을 쓰는 반가상화에 이 도구를 사용하는 것이 더 일반적이게 되었다. A 머신(host) 에서 컴파일러를 돌려서 B 머신(target) 에서 동작하는 바이너리를 만드는 것을 크로스 컴파일이라고 합니다. 이때 사용하는 컴파일러가 크로스 컴파일러 입니다. 예를들어, 맥북에 안드로이드 스튜디오를 설치하고 소스코드를 빌드한 ..
Cross entropy의 이해, 사용 방법(Categorical, Binary, Focal loss) 이 글에서는 여러 가지 클래스를 분류하는 Classification 문제에서, Cross entropy를 사용하는 방법와 원리를 알아봅니다. 1. Tasks 우선, 두가지 문제를 봅시다. 1-1) Multi-Class Classfication 각 샘플(이미지)은 클래스 C 중 하나로 분류될 수 있습니다. 해는 0번, 즉 [1 0 0] (원핫인코딩), 달은 1번, [0 1 0], 구름은 2번, [0 0 1] 으로 분류될 수 있다는 말입니다. CNN은 s(scores) 벡터를 출력하고, one hot 벡터인 타겟(ground truth) 벡터 t와 매칭이 되어 loss값을 계산할 것입니다. 즉, Multi-Class Classification은 여러 샘플(이미지)에서 C개의 클래스 중 하나의 클래스로 분류하..
[Keras] Dense, Fully connected Layer 누구나 이해할 수 있는 딥러닝 - cs231n 5강 (Convolutional Neural Networks, CNN) - cs231n 5강의 내용을 정리한 글입니다. - 최대한 쉽게, cs231n 강의를 스스로 다시 이해하며, 처음 딥러닝을 공부하는 사람들도 쉽게 이해할 수 있게 정리해보았습니다. - 저도 초보인지라 틀리는 cding.tistory.com 신경망 신경망은 위의 그림에서 input -> activation function -> output 연산이 되고 output이 새로운 input이 되는거라고 생각하면 됩니다. 신경망의 기본 함수 형태는 아래와 같습니다. y = f(Wx+b) f() : 활성화 함수 W : 가중치 x : input data y : output data 기본신경망 만들기 t..
[Keras] Sequential model 시작하기 1. 케라스 Sequential 모델 시작하기 2. 입력 형태 지정하기 3. 컴파일 4. 학습 1. 케라스 Sequential 모델 시작하기 2. 입력 형태 지정하기 만들어진 모델은 입력 형태에 대한 정보를 필요로 합니다. 때문에 Sequential 모델의 첫 번째 레이어는 입력 형태에 대한 정보를 받습니다. 두 번째 이후 레이어들은 자동으로 형태를 추정할 수 있기 때문에 형태 정보를 갖고 있을 필요는 없습니다. 형태 정보를 전달하기 위한 방법은 다음과 같습니다. 정수형 또는 None으로 구성된 형태 튜플(shape tuple)의 input_shape 인자를 첫번째 레이어에 전달합니다. 여기서 None은 음이 아닌 어떠한 정수를 받을 수 있음을 의미합니다. 참고로 input_shape에는 배치 차원은(b..
Tensorflow vs Keras / 딥러닝 프레임워크 keras와 tensorflow 차이점 ​ keras는 using tensorflow backend 라고 한다. 케라스는 텐서플로우를 백엔드로 사용하고 있다. keras는 tensorflow보다 사용자 입장에서 친말한 프레임워크이다. keras의 내부 모듈는 tensorflow를 기반으로 사용할 수 있다. ​ keras VS tensorflow는 사과 VS 바나나의 관계가 아니다. ​
Tensorflow vs Keras
[python] 설치된 패키지 버전 확인 [python] 설치된 package 버전 확인 pip로 설치된 package 목록을 보기 위해서는 pip에 freeze 옵션을 사용합니다. freeze에 대한 옵션 설명은 아래와 같습니다. freeze Output installed packages in requirements format. 실제로.. jybaek.tistory.com
[Keras] set_image_dim_ordering Versions: Keras - 2.3.1 TensorFlow - 1.14
[Jupyter Notebook] 가상환경 Kernel 연결하기 jupyter notebook 시작과 설정 설명 Jupyter Notebook에 가상환경 Kernel 연결하기 목차 1. 아나콘다 가상 환경 만들기 아나콘다에 가상환경을 구성하도록 합니다. tf2.0 이라는 이름을 가진 파이썬 가상 환경을 만들었습니다. conda create -n tf2.0 python 자세한 내용은 이전 글을 통해 chancoding.tistory.com
[Jupyter notebook] 단축키 Command Mode ( press Esc to enable) shift-Enter : run cell, select below Ctrl-Enter : run cell Alt-Enter : run cell, insert below Y : to code M : to markdown B : insert cell below X : cut selected cell C : copy selected cell Shift-V : paste cell above V : paste cell below Z : undo last cell deletion D,D : delete selected cell Shift-M : merge cell below Edit Mode ( press Enter to enable) Shift-Ta..
[Jupyter notebook, anaconda]ModuleNotFoundError: No module named 'tensorflow' Jupyter Notebook에 가상환경 Kernel 연결하기 [텐서플로우] ModuleNotFoundError: No module named 'tensorflow' 오류 해결 방법 단일 응용 프로그램이 아닌 경우에는 환경 설정이 제일 어려운 일입니다. 동일한 방법으로 했는데 왜 난 안될까? 포기했다가 다시 설치하면 되는 경우도 있고 이것 저것 다 따라해서 뭐때문에 copycoding.tistory.com
anaconda 기본 명령어
anaconda 가상환경(Virtual Environment)은 앞서 말씀드린대로 python을 개발할 때 필수라고 할 수 있습니다. 저도 Android 개발만 할 때는 가상환경에 다소 생소했습니다. 하지만, python을 다루게 되면서 가상환경이 왜 필요한지에 대해 깨닫게 되었습니다. 가상환경(Virtual Environment)이란? 가상환경은 말 그대로 가상의 개발 환경을 만들어 주는 것입니다. 들어 보셨을지는 모르겠지만, 가상머신(Virtual Machine)을 이용해 os를 가상으로 올려서 윈도우 환경이나 리눅스 환경을 만들어 개발을 하는 경우가 있습니다. tensorflow라는 패키지(package)를 import해서 사용하고 있습니다. 그럼 왜 그냥 설치해서 사용하면 되지, 굳이 가상환경을 만들어서 새로 패..
[CNN] lenet-5 LeNet은 CNN을 처음으로 개발한 얀 르쿤(Yann Lecun) 연구팀이 1998년에 개발한 CNN 알고리즘의 이름이다. original 논문 제목은 "Gradient-based learning applied to document recognition"이다. 우선 LeNet-5의 구조를 살펴보자. 그림1에서 볼 수 있듯이 LeNet-5는 인풋, 3개의 컨볼루션 레이어(C1, C3, C5), 2개의 서브샘플링 레이어(S2, S4), 1층의 full-connected 레이어(F6), 아웃풋 레이어로 구성되어 있다. 참고로 C1부터 F6까지 활성화 함수로 tanh을 사용한다. [CNN 알고리즘들] LeNet-5의 구조 LeNet-5 => https://bskyvision.com/418 AlexNet => ..
ImageNet Alexnet Resnet VGG Lenet GoogLenet YOLO
Jenkins, Docker, AWS 처음에는 Jenkins 를 단독으로 설치하려고 하였으나, 이참에 Docker 를 이용해서 자동화된 테스트까지 돌리고 싶어서, Docker 위에 Jenkins 를 설치하기로 마음 먹었다. Docker Docker 는 환경의 구성을 Image 로 만들어 두고 이를 Container 를 이용해 항상 동일한 환경을 제공해주는 Platform 이다. 여기서 Image 는 세팅 환경이고, Container 는 실행 환경이라고 볼 수 있다. Image 로 Jenkins 를 세팅하고, Container 에서 Jenkins 를 구동한다. Docker 를 이용해 Jenkins 를 세팅하게 되면, Docker 내부의 Docker 를 만들어서 일정한 테스트 환경을 유지하는데 사용할 수 있다. AWS CLI AWS CLI 는 ..
backend 이해하기 사용한 서버 목록 - WAS 서버 (자바+스프링) 3대 - Mysql 서버 2대 (Master, Slave) - Redis 서버 1대 (세션,캐시) - Nginx 웹서버 1대 - Jenkins 서버 1대 - Vault 서버 1대 - Ngrinder 서버 1대 - Pinpoint 서버 1대 프로젝트 서버 구조에 대한 전반적인 설명 - 사용자는 Nginix IP로 Http 요청을 보냅니다. - Nginix의 Reversed Proxy 기능을 통해 WAS서버 3대에 부하를 분산시킵니다. - WAS서버는 데이터 접근을 위해 Mysql서버와 Redis서버에 요청을 보냅니다. - Jenkins서버는 CI/CD 구축을 위해 사용하여 Github에 코드를 push할 시 통합, 배포를 자동화 시켜줍니다. - Jenkin..
[Jenkins] CI ( Continuous Integration ) / CD ( Continuous Delivery ) CI 서비스는 전체 응용 프로그램을 컴파일하고 테스트합니다. 또한 지속적인 딜리버리는 이 테스팅 된 애플리케이션을 예를 들어 알파 테스터가 조기 피드백을 사용하고 제공 할 수 있도록 저장소로 푸시합니다. CD 빌드는 프로덕션 환경에 자동으로 배포되며 광범위한 베타 테스트에도 사용할 수 있습니다. CD는 린 로지스틱스를 목표로 합니다. 새 코드 추가부터 승인 테스트까지 프로세스를 자동화합니다. CD는 모든 단계를 자동화하여 빌드를 배포 할 준비가 되었습니다. 지속적인 딜리버리 : 응용 프로그램을 구축하고 테스트를 실행하는 것 외에도 응용 프로그램은 "전달"되기도합니다. 이는 종종 누군가가 수동 테스트를 수행 할 수 있도록 서버에 배치하거나 테스트 그룹의 사용자에게 전자 메일로 전송하는 것을 의미합니다. 프..
[Jenkins] 젠킨스 설치 및 구동 젠킨스는 자바로 개발되었으며 서블릿 컨테이너 위에서 구동된다. 따라서 WAS인 Toacat, Jetty 등 서블릿 컨테이너를 설치하고 이 위에서 젠킨스 war파일로 구동한다. 각 OS별로 별도의 설치파일을 제공하고 있으나, OS에 제한적이지 않고 WAS에 배포함으로써 구동할 수 있도록 .war파일을 다운받았다. JDK 설치 http://www.oracle.com/technetwork/java/javase/downloads/index.html 접속 후 JDK 설치 windows 환경 변수 설정 WAS 설치 http://tomcat.apache.org/ 접속 후 Tomcat 설치 원하는 위치에 압축 해제 Jenkins 설치 https://jenkins.io/ 접속 후 LTS 버전 탭 이동 Download J..
[Jenkins] Jenkins란 젠킨스는 소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이다. CI(Continuous Integration) 툴 이라고 표현한다. 다수의 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 빈번히 업로드함으로써 지속적 통합이 가능하도록 해준다. 젠킨스와 같은 CI툴이 등장하기 전에는 일정시간마다 빌드를 실행하는 방식이 일반적이었다. 특히 개발자들이 당일 작성한 소스들의 커밋이 모드 끝난 심야 시간대에 이러한 빌드가 타이머에 의해 집중적으로 진행되었는데, 이를 nightly-build라 한다. 하지만, 젠킨스는 정기적인 빌드에서 한발 나아가 서브버전, Git 과 같은 버전관리시스템과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스..
[DP] 부분집합의 합 n번째까지 고려했을 때 합이 m인 부분집합이 존재하는가? 합이 0인 것은 공집합이다. 이전에 만든 값이 이미 원하는 합을 만들어놨는가? -> 그렇다면 만들 수 있으므로 true 아니면 이번에 새로 추가를 하면 원하는 합이 만들어지는가? 현재 원하는 합에서 새로 추가한 값을 뺀 경우가 만들어져 있는가? -> 그렇다면 만들 수 있으므로 true optimal substructure를 갖고 있으므로 새로 추가된 값에 대해서만 고려한다. 작은 부분에 대해서는 이미 다 구했다고 가정한다. 부분집합을 찾고자 한다면 n번째까지 고려했을 때 가능한지 생각해봐야한다. [동적 프로그래밍 예제] 부분집합의 합(C언어) [동적 프로그래밍(DP)] 부분집합의 합 본 포스팅은 도서 "문제로 풀어보는 알고리즘"(황인욱, 김용혁 지..
[C] 이중 pointer 포인터도 실제로는 변수이기 때문에 메모리 주소를 구할 수 있습니다. 하지만 포인터의 메모리 주소는 일반 포인터에 저장할 수 없고, int **numPtr2;처럼 이중 포인터에 저장해야 합니다. int **numPtr2;를 영어로 읽으면 pointer to pointer to int가 됩니다(numPtr2 → numPtr1 → num1). 여기서 이중 포인터 numPtr2를 끝까지 따라가서 실제 값을 가져오려면 **numPtr2처럼 변수 앞에 역참조 연산자를 두 번 사용하면 됩니다. 즉, 역참조를 두 번 하므로 numPtr2 ← numPtr1 ← num1과 같은 모양이 되고 num1의 값을 가져올 수 있습니다. ▼ 그림 34‑25 이중 포인터의 역참조 포인터를 선언할 때 *의 개수에 따라서 삼중 포인터, ..
[C] pointer 증감연산자 구름EDU - 모두를 위한 맞춤형 IT교육 구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/ edu.goorm.io
[JAVA] 배열 오름차순 정렬 [Java] 자바 배열 정렬하기(오름차순, 내림차순) Arrays.sort() 자바에서 배열이나 리스트를 정렬하려고 한다면 java.util.Arrays 클래스의 sort() 메서드를 사용하시면 따로 정렬 로직을 짜지 않아도 한번의 메소드 호출로 간편하게 배열이나 리스트를 정렬할 수 coding-factory.tistory.com
Union find make-set union(x, y) = y를 x의 자손으로 넣음 [알고리즘] Union-Find 알고리즘 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io weighting rule for union( i, j ) collapsing find set
NCHW, NHWC, CHWN By default, TensorFlow uses NHWC format, and most of the image loading APIs, such as OpenCV, are using HWC format. It is naturally compatible with TensorFlow to most of the image loading APIs, so I have been using NHWC format brainlessly for a long while. I believe I had also seen that NCHW is more efficient compared to NHWC when cuDNN is used somewhere. Tensor Physical Layouts on Memory Hello U..
Graph 사이클 찾기 back_edge가 존재하면 사이클이 존재한다는 얘기 Q. 그래프에서 사이클이 이란 ? 그래프의 특정 정점에서 출발하여 돌아다니다가 다시 처음 출발했던 곳으로 되돌아 갈 수 있으면 사이클이 있다고 한다. 그림1에서 (a)는 Tj(출발) → Tn → Tm → Tj(출발지점으로 다시 돌아옴) 으로 순환되는 사이클이 있지만 (b)는 어디에서 출발하던 출발지점으로 다시 돌아올수 있는 방법이 없다. 즉 사이클이 존재하지 않는다. Q. 사이클을 찾는다는 것은? 사이클을 검출(detect) 한다는 것은 그래프내에 사이클이 있는가? 있다면 총 몇 개 존재하는가 ? 그리고 사이클에 포함된 노드의 개수는 몇 개인가? 등을 알아내는 것이다. 어떠한 이유로 그래프 자료구조를 이용해 다양한 문제를 풀다보면 그래프내 사이클을 찾..
Topology sort(위상 정렬) [알고리즘] 위상 정렬(Topological Sort)이란 - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io 방향그래프의 정보를 저장하고 있는 파일을 읽어 다음의 두 가지 중에 하나를 출력하는 코드를 작성하시오. 그래프는 연결되어(connected) 있다고 가정해도 됩니다. (1) 노드들의 topological ordering을 출력 (이 경우는 cycle이 없는 것을 의미합니다.) 또는 (2) 존재하는 하나의 cycle을 출력 25. 위상 정렬(Topology Sort) 위상 정렬(Topology Sort)은 '순서가 정해져있는 작업'을 차례로 수행해야 할 때 그 순서를 결정해주기 ... blog.naver.com ..
git status 개념 dololak.tistory.com/304 [Git] Git 상태 확인하기 - git status 명령어 및 상태 파헤치기! 먼저 봐야할 글 [Git] Git 세 가지 영역 및 상태 Committed, Modified, Staged 설명 Git에서 세 가지 영역 Git 프로젝트 디렉터리에는 .git(이하 Git 디렉터리) 를 포함하여 프로젝트를 구성하는 수많은 파일들 dololak.tistory.com