텐스플로우 (TensorFlow)가 윈도우에도 설치가 가능 하도록 나왔습니다.

네이티브 (Native)로 지원을 해준다고 합니다.

작성 날짜 기준 최신의 그래픽카드 (GPU)는 쿠다 (CUDA) 8로 기준으로 돌아간다고 합니다.


< 요구 조건 >

거창한 것을 요구하지는 않습니다. 단지 윈도우 운영체제에 제한이 있습니다.



윈도우 7

 윈도우 10 그리고

 서버 2016



< 사전 준비 >



python



파이썬이 있어야 합니다. 역시 대세인가 보네요.


설치는 파이썬 (Python) 공식 홈페이지에서 다운 받아서 설치하시면 됩니다.



< 설치 >

설치는 "사전 준비" 단계에서 설치하신 파이썬 패키지 (python package)인 "pip"를 이용하여 설치를 할 수 있습니다.



# CPU 버전

C:\> pip install tensorflow


# GPU 버전

C:\> pip install tensorflow-gpu



개인적으로, 간단하게 설치가 가능하게 나와서 만족을 합니다.



< 결과 >

실행 결과는 다음과 같습니다. 저의 설치 환경은 윈도우 7에서 하였습니다.

개인적으로 욕심이 많아서 CPU 버전과 GPU버전을 동시에 설치해 보았습니다.

무리없이 모두 성공적으로 설치되었다고 해서 더욱 만족합니다.





출처 : https://developers.googleblog.com/2016/11/tensorflow-0-12-adds-support-for-windows.html

리스트 디렉토리 컨텐츠는 (List Directory Content)에 대해서 서술해 보겠습니다.

리스트 디렉토리 컨텐츠는 자주 사용하는 명령어 중에 하나입니다.

윈도우즈 (Widows), 유닉스 쉘 (UNIX shell)과 맥 (Mac, OS X)에서 사용할 수 있는 방법 입니다.

실제적으로 윈도우즈 계열은 명령어는 유닉스 계열과 맥과의 명령어는 다릅니다.


아래의 순서대로 설명을 하겠습니다.

< 목차 >

< 윈도우즈 (Windows) >

< 명령어 (Command) >

< 사용방법 (Usage) >

< 유닉스 쉘 (UNIX shell) & 맥 (Mac, OS X) >

< 명령어 (Command) >

< 사용방법 (Usage) >




< 윈도우즈 (Windows) >

처음은 리스트 디렉토리 컨텐츠를 실행해 보기 위해서, 윈도우즈 커맨드 (Windows command lines)를 시작해야합니다. 여기에서 확인하시면 됩니다.

< 명렁어 (Command) >

리스트 디렉토리 컨텐츠 명령어는 아래와 같습니다.



dir



"dir"는 디렉토리에 속한 파일들과 폴더 (Folder)들의 목록을 디스플레이 (Display, 화면에 출력)해 줍니다.



< 사용 방법 (Usage) >

사용 방법은 아래와 같습니다.



dir destination_folder


즉, 명령어 (dir) 뒤에 목적 폴더 (destination_folder)를 지정해 주시면 되지만, "dir"은 기본 옵션으로 현재 디렉토리로 지정되어있습니다. 따라서 명령어 (dir)만 입력하셔도 결과를 확인 하실 수 있습니다.



바로 현재 디렉토리의 컨텐츠를 확인해 보도록 하겠습니다.



위의 그림에서, 명령어를 이용하여 결과를 확인 하였습니다. 여기에서는 "folder1", "main.c"와 "readme.txt"가 존재하고 있음을 확인 하였습니다.






< 유닉스 쉘 (UNIX shell) & 맥 (Mac, OS X) >

< 명렁어 (Command) >

리스트 디렉토리 컨텐츠 명령어는 아래와 같습니다.



ls


윈도우즈의 명령어 "dir"과 유사한 기능을 합니다.



< 사용 방법 (Usage) >

사용 방법은 아래와 같습니다.


ls destination_folder



바로 현재 디렉토리의 컨텐츠를 확인해 보도록 하겠습니다.


위의 이미지에서, 명령어 "ls"를 입력하였을때 결과를 보실 수 있습니다.


여기서 재미있는 사실 하나 더 서술하면, 아래의 이미지 입니다.


즉, 명령어 "dir"은 유닉스 및 맥 계열에서도 사용할 수 있다는 것입니다.





7 가지 기본 커맨드 명령어 (7 Basic command lines)

1. 디렉토리 컨텐츠 (List Directory Content) || 파일 목록

2. 새로운 폴더 생성 (Create a new folder)

3. 새로운 파일 생성 (Creating New File)

4. 디렉토리 변경 (Change Directory, 현재 경로 변경)

5. 파일들 이동 (Moving Files)

6. 파일들 복사 (Copying Files)

7. 파일 열기 (Open Files)



출처 : https://codingsec.net/2016/06/7-basic-cmd-commands-everyone-must-know/

세션(Session)에서 실행한 명령어를 확인하고, 실행할 수 있다면 쉽게 하고자 하는것을 할 수 있습니다.  이것을 윈도우 커맨드에서 지원을 해주고 있습니다. 그것은 바로 "F7"버튼 입니다.이것 또한, 예를 들어서 보는 것이 훨씬 수월 할것입니다.

일단 커맨드 창을 열고 몇가지 명령어를 실행예제는 아래의 그림과 같습니다.



여기서, 우리가 하고자 하는 네비게이터, 즉 키보드의 "F7" 버튼을 누르시면 아래와 같이 나옵니다.



중앙에 사각형의 네비게이터가 나옵니다. 여기서는 키보드 방향키를 이용하여 컨트롤(control)할 수 있으며, 선택은 엔터(Enter) 버튼을 사용하시면 됩니다. 여기서는 "2: dir"을 선택하였습니다.

그 결과는 아래의 그림과 같습니다.


간단한 예제였지만, 사용했던 명령어가 생각이 나지 않았을때 유용하게 사용할 수 있는 명령어 였습니다.


윈도우 커맨드에서는 여러개의 명령어를 동시에 실행시킬 수 있습니다. 그것을 가능하게 해주는 것이 "&&" 입니다.

아래와 같이 사용하시면 됩니다.


command1 && command2


예를 들어보면 아래와 같습니다.


dir && ipconfig


여기서 "dir" 명령어와 "ipconfig" 두 가지의 예를 들어서 실행을 해 보겠습니다.




위의 그림에서 나오듯이, "dir"의 결과가 나오고, 그 뒤를 이어서 "ipconfig"의 결과가 나오는 것을 보실 수 있습니다.




커맨드 출력을 클립보드로 보내는 방법은 다음과 같습니다.


<command> | clip


"ipconfig" 명령어를 예를 들어 보겠습니다.

그렇다면 명령어는 아래와 같이 됩니다.


ipconfig | clip


결과는 아래와 같이 나옵니다.


결과를 메모장 (notepad)를 이용하여 결과를 확인하였습니다.
    메모장에서 "ctrl + c"를 해주시면 확인하실 수 있습니다.





커맨드 (Command)에서 실행 결과를 파일로 저장하는 방법을 기술하도록 하겠습니다.


커맨드 실행 방법은 여기 링크를 참고하세요.


기본적인 형식(basic form)은 아래와 같습니다.


<command> ">" (without quotes) <a filenname of the result>


즉, 예제로 보면 아래와 같습니다(a example to explain).


ipconfig > result_of_ipconfig.txt


* ipconfig : (명령어) 네트워크 설정을 확인할 수 있는 명령어 입니다.

(a command to describe)

* >           : (여기서는) ipconfig의 결과를 ">" 뒤에 나오는 곳으로

전달을 해줍니다.

(send the result to "result_of_ipconfit.txt")

* result_of_ipconfig.txt : 결과를 저장하는 파일입니다.

(save the example of command of result)("result_of_ipconfig.txt" 이름의 새로운 파일이 생성 됩니다.)



실행 결과를 캡쳐 이미지로 보여 드리면 아래와 같습니다.


제일 먼저, 실행할 폴더에 파일이 존재하지 않음을 확인을 했습니다. 그 이후 'ipconfig'의 결과를 출력을 아래 이미지로 확인하실 수 있습니다.


단순히 'ipconfig'의 명령만 실행했을때는 결과 파일이 생성되지 않았음을, 아래의 이미지로 확인할 수 있습니다.



마지막으로, 'ipconfig' 명령어를 실행한 결과를 ">"를 이용하여 "result_of_ipconfig.txt"파일에 저장하고, 메모장을 이용하여 제대로 저장되었음을 아래 이미지로 확인할 수 있습니다.

( ipconfig > result_of_ipconfig.txt )


제가 알고 있는 커맨드 윈도우 실행 방법은 다음과 같습니다.

- 검색

- 실행 대화 상자


첫 번째, 검색 방법은 버튼을 누르시고, "command prompt"를 입력하시고 엔터 (혹은 마우스 클릭)을 누르시면 됩니다. 아래의 그림은 "command" 까지만 입력한 상태에서의 "command prompt"가 검색된 화면 입니다.



두 번째, 실행 대화 상자 방법은 " + r"동시에 누르시면 됩니다. 버튼을 누르시면 아래와 같습니다.




위에서의 두가지 방법을 실행하면 결과 화면은 아래와 같습니다.



< 출처 : http://loenahmik.blogspot.kr/2016/09/windows-caffe.html >


테스트 환경은 아래와 같습니다.

- Windows 7(64bit)

- Visual Studio 2013

- Caffe

- MNIST


설치과정은 생략하고 데스트 위주로 정리합니다.


LeNet을 활용한 MNIST 예제

- Training과 Test에 사용할 데이터 다운로드

< 참고파일 : .\data\mnist\get_mnist.sh >

(caffe가 설치된 폴더를 기준으로 작성하였습니다.)


* 아래 링크들을 클릭하시면 다운로드 하실 수 있습니다.

TrainingImages

TrainingLabels

TestImages

TestLabels


* 압축을 해제하시면 아래의 파일들이 있습니다.

(이 파일들을 '.\data\mnist\'로 옮겨 주세요, 이후에 경로 지정을 이곳으로 합니다.)

train-images.idx3-ubyte

train-labels.idx1-ubyte

t10k-images.idx3-ubyte

t10k-labels.idx1-ubyte



- lmdb로 변환

< 참고파일 : .\examples\mnist\create_mnist.sh >


* convert_minist_data.exe을 활용하여 lmdb로 변환합니다.

첫 번째 training 데이터 입니다.

> .\Build\x64\Debug\convert_mnist_data.exe .\data\mnist\train-images.idx3-ubyte .\data\mnist\train-labels.idx1-ubyte .\examples\mnist\mnist_train_lmdb --backend=lmdb


두 번째로는 test 데이터 입니다.

> .\Build\x64\Debug\convert_mnist_data.exe .\data\mnist\t10k-images.idx3-ubyte .\mnist\t10k-labels.idx1-ubyte .\examples\mnist\mnist_test_lmdb --backend=lmdb


결과는 아래의 그림과 같이 새로 만들어진 폴더를 확인 하실 수 있습니다.



- Net과 Solver는 caffe에서 제공해주는 것을 그대로 사용하겠습니다.

* Net 위치 : .\examples\mnist\lenet_train_test.prototxt

* Solver 위치 : .\examples\mnist\lenet_solver.prototxt


<TroubleShooting>

lenet_train_test.prototxt 파일에 보시면 아래 그림과 같이 레이어 안에 'source' 위치를 지정하는 곳이 있습니다. 이 곳은 이전 "lmdb로 변환"에서 결과를 저장하는 곳 ("training : .\examples\mnist\mnist_train_lmdb""test : .\examples\mnist\mnist_test_lmdb"로 각각 지정한 곳입니다.)


- Training 과정

< 참고파일 : .\examples\mnist\train_lenet.sh >


> .\Builtx64\Debug\caffe.exe train --solver=examples\mnist\lenet_solver_prototxt


결과로 생성된 파일은 아래의 그림과 같습니다.




이 글은 Visual Studio를 활용하여 MEX함수를 Debug하는 방법입니다.


일단 저의 환경설정은 아래와 같습니다.
(아래에 설명하는 방법은 버전과는 상관없이 작동합니다. 참고만 하세요)

- Windows 7(64bit)

- MATLAB R2016a

- Visual Studio 2013


실행 예제는 MATWORKS사에서 기본 적으로 제공하는 예제로 설명을 드리겠습니다.

- arrayProduct.c

- demo_arrayProduct.m


첫 번째 소스는 MATLAB Command windows에서 아래와 같이 입력하시면 바로 보실수 있습니다.


>> edit([matlabroot '/extern/examples/mex/arrayProduct.c']);


두 번째 소스는 아래와 같습니다.


%% demo_arrayProduct.m


%% clear

clear all; close all; clc;


%% call arrayProduct

scalar = 5

A = [1.6, 2, 5.2]

B = arrayProduct(scalar, A)


위의 두 소스는 소스 목록에 보시면 링크 되어있으므로 다운 받으셔도 됩니다.



자, 이제 준비를 마쳤으므로 디버깅 (Debugging)하는 방법을 설명 드리겠습니다.


첫 번째, mex 파일을 디버깅할 수 있도록 빌드한다.


>> mex -g arrayProduct.c




두 번째, Visual Studio와 연결한다.


Visual Studio를 실행하시고, [DEBUG] -> [Attach to Process] 선택을 하시면 됩니다.



그 다음 MATLAB.exe을 더블클릭 해주시면 됩니다.


이제 파일을 선택해주시면 됩니다.
(모두들 잘 아시겠지만, 파일 선택은 [FILE] -> [Open] -> [File] 선택해 주시면 됩니다.)


여기서는 MEX파일을 선택해 줍니다.

(예제에서는 'arrayProduct.c'가 이에 해당됩니다.)


예제 파일이 열렸습니다.

저희들은 디버깅을 원하기 때문에 디버깅 포인트를 아래 그림과 같이 클릭해 주시면 됩니다.
(mex는 'mexFunction()'가 메인 이라고 보시면 되기때문에 이 함수 안에 찍으시면 됩니다.)


이제 실제적으로 MATLAB에서 디버깅을 시작하시면 '스텝 인'을 함수 'arrayProduct()'에서 누르시면 됩니다.


위와 같이 실행을 하시면 Visual Studio에서 바로 디버깅 포인터를 확인 하실 수 있습니다.


즐 코딩하세요~

+ Recent posts