03 Jan 2018
|
머신러닝
Neural Network
퍼셉트론을 이용하면 복잡하고 어려운 함수도 표현이 가능합니다. 하지만, 가중치를 설정하는 작업을 사람이 수동으로 해줘야하는 불편함이 여전히 존재합니다.
신경망(Neural Network)은 이러한 문제점을 해결해줍니다. 가중치를 학습을 통해서 자동으로 획득하고 수정할 수 있습니다.
Simple Neural Network
신경망을 간단하게 그림으로 표현하면 다음과 같습니다.

데이터가 입력되는 쪽을 Input
, 결과값이 출력되는 쪽을 Output
, 그리고 그 사이를 Hidden
이라고 합니다. 층이 많아지면 아래의 그림과 같은 모습이 됩니다.

퍼셉트론과 신경망
신경망은 퍼셉트론과 크게 다르지 않습니다. 퍼셉트론은 다음과 같은 함수로 이루어져 있습니다.
[output =
\begin{cases}
0 ( w_1 x_1 + w2 x_2 + … + w_i x_i \le 0 )
1 ( w_1 x_1 + w2 x_2 + … + w_i x_i > 0 )
\end{cases}]
이걸 좀 더 간결하게 표현하면 다음과 같이 표현할 수 있습니다.
[y = h(b + w_1 x_1 + w_2 + x_2 + … w_i x_i)
h(x) =
\begin{cases}
0 ( x \le 0 )
1 ( x > 0 )
\end{cases}]
입력 신호의 총합이 h(x)
라는 함수를 거쳐서 변환이 되며, 그 변환된 값이 y 출력값이 됩니다.
Activation Function
위에서 나온 h(x)
함수는 활성화 함수(Activation Function)라고 합니다. 입력 신호의 총합을 출력 신호로 변환해주는 함수입니다.
위의 수식에서 $ b + w_1 x_1 + w_2 + x_2 + … w_i x_i $ 부분을 a
라는 변수로 치환하면 다음과 같은 식으로 표현이 됩니다.
[a = b + w_1 x_1 + w_2 + x_2 + … w_i x_i
y = h(a)]
그림으로 표현하면 아래와 같은 그림이 되고,

조금 더 간결하게 표현하면 다음과 같이 표현됩니다.

03 Jan 2018
|
Docker
Docker Container
Docker 컨테이너는 Docker 이미지로부터 생성할 수 있습니다. 이미지 하나로부터 동일한 컨테이너를 여러개 생성할 수 있으며, 각 컨테이너는 샌드박스(Sandbox) 형태로 되어 있어 각 컨테이너간 간섭이 없습니다.
컨테이너 생성
docker run <image name>
명령어를 이용해서 컨테이너를 생성할 수 있습니다. run
명령어로 실행한 컨테이너는 주어진 명령이 끝나거나 사용자 명령에 따라 종료됩니다.
예를 들어 다음과 같이 명령을 내리면
$ docker run ubuntu echo "hello"
hello
화면에 ‘hello’라는 메시지만 출력하고 해당 컨테이너는 종료됩니다. 해당 컨테이너의 상태 여부는 docker ps -a
명령어를 이용해서 조회 가능합니다.
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
303c05fe9c03 ubuntu "echo hello" 4 seconds ago Exited (0) 3 seconds ago dreamy_goldstine
STATUS
가 Exited
상태인 걸 확인할 수 있습니다.
컨테이너 목록 조회
컨테이너 목록은 docker ps
명령어를 이용해서 조회할 수 있습니다. 여기에 -a
옵션을 붙이면 종료된 컨테이너 정보까지 조회됩니다.
컨테이너 시작/재시작/정지
다음 명령어로 컨테이너를 시작하거나 재시작, 정지할 수 있습니다.
$ docker start <container name>
$ docker restart <container name>
$ docker stop <container name>
현재 실행중인 컨테이너에 접속하기
docker attach
명령어로 현재 실행중인 컨테이너에 접속할 수 있습니다.
$ docker attach <container name>
외부에서 컨테이너 안의 명령 실행하기
docker exec
명령어로 컨테이너 밖에서 컨테이너 안의 명령을 실행할 수 있습니다.
$ docker exec <container name> <command>
ex) docker exec snowdeer_docker echo "Hello, SnowDeer"
exec
명령어는 현재 실행 중인 컨테이너에만 사용할 수 있으며, 중지 상태의 컨테이너에는 사용할 수 없습니다.
컨테이너 삭제
docker rm
명령어로 컨테이너 삭제를 할 수 있습니다. 컨테이너 삭제는 rm
명령어이며, 이미지 삭제는 rmi
입니다.
$ docker rm snowdeer_docker
docker run
명령을 이용해서 컨테이너를 실행할 때 --rm
옵션을 붙이면 컨테이너 종료시 해당 컨테이너가 자동으로 삭제되기 때문에 편리하게 연습용으로 편리하게 사용할 수 있습니다.
03 Jan 2018
|
Docker
Docker Hub
Docker Hub에는 10만개가 넘는 Docker 이미지들이 존재합니다. 직접 Docker Hub 홈페이지를 방문해도 되고 터미널에서 커맨드 명령어로 원하는 이미지를 검색하거나 다운로드할 수 있습니다.
여기서는 터미널에서 커맨드 명렁어로 이미지를 검색하고 다운로드하는 방법을 포스팅합니다.
이미지 검색
Docker 이미지는 다음 명령어를 이용해서 검색할 수 있습니다.
$ docker search <image name>
ex) docker search ubuntu
이미지 다운로드
pull
명령어를 이용해서 원하는 이미지를 다운로드할 수 있습니다. 이미지 이름 뒤의 <tag>
를 이용하여 원하는 버전의 이미지를 다운로드할 수 있으며, 생략할 경우 기본값으로 latest
태그가 입력됩니다.
$ docker pull <image name>:<tag>
ex) docker pull ubuntu
또는 run
명령어를 이용해서 원하는 이미지를 다운로드하면서 해당 이미지의 컨테이너를 실행할 수 있습니다. run
명령어는 로컬에 이미지가 있을 경우 해당 이미지로부터 컨테이너를 생성하며, 로컬에 이미지가 없을 경우 이미지를 다운로드합니다.
$ docker run -i -t --name <container name> <image name>
ex) docker run -i -t --name hello ubuntu
이미지 리스트 조회
docker images
명령어를 이용해서 로컬에 설치된 이미지 리스트를 확인할 수 있습니다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 0458a4468cbc 10 days ago 112MB
hello-world latest f2a91732366c 2 months ago 1.85kB
이미지 삭제
이미지 삭제는 rmi
명령어를 이용합니다.
$ docker rmi <image name>:<tag>
ex) docker rmi ubuntu:latest
03 Jan 2018
|
Docker
유저 권한 추가
Docker 명령어를 실행하기 위해서는 매번 sudo
를 입력해야 합니다. sudo
명령어 없이 Docker를 사용하기 위해서는 Docker가 사용하는 그룹에 사용자 ID를 추가하면 됩니다.
sudo gpasswd -a <사용자ID> docker
$ sudo gpasswd -a snowdeer docker
그리고 나서 로그아웃 후 로그인하면 됩니다.
02 Jan 2018
|
Python
conda vs virtualenv
conda
와 virtualenv
의 차이는 다음과 같습니다.
Task |
Conda package and environment manager command |
Pip package manager command |
Virtualenv environment manager command |
|
패키지 설치 |
conda install |
pip install |
미지원 |
|
패키지 업데이트 |
conda update –name |
pip install –upgrade |
미지원 |
|
삭제 |
conda remove –name |
pip uninstall |
미지원 |
|
가상환경 생성 |
Create an environment |
conda create –name python |
미지원 |
cd ; virtualenv |
가상환경 활성화 |
source activate |
미지원 |
source //bin/activate |
|
가상환경 비활성화 |
source deactivate |
미지원 |
deactivate |
|
이용가능한 패키지 검색 |
conda search |
pip search |
미지원 |
|
특정 소스로부터 패키지 설치 |
conda install –channel |
pip install –index-url |
미지원 |
|
설치된 패키지 리스트 조회 |
conda list –name |
pip list |
미지원 |
|
가상환경 리스트 조회 |
conda info –envs |
미지원 |
virtualenv wrapper 설치 후, lsvirtualenv 실행 |
|
파이썬 설치 |
conda install python=x.x |
미지원 |
미지원 |
|
파이썬 업데이트 |
conda update python * |
미지원 |
미지원 |
|