다음 글을 읽어보면 프로젝트 템플릿과 코드 위저드가 변할 것을 알 수 있다.

https://blogs.msdn.microsoft.com/vcblog/2017/08/15/changes-to-project-templates-and-code-wizards-in-15-3/



C, C++ 등을 배우면서 콘솔 응용 프로그램을 만들 때 빈 프로젝트로 설정하는데

아래와 같이 하려면 어떻게 해야할까?




방법은 Windows 데스크톱 마법사로 프로젝트를 만드는 것이다.




Windows 데스크톱 마법사를 누르면 아래 사진처럼 창이 뜬다.

여기서 빈 프로젝트를 만들고 시작하면 끝



저작자 표시 비영리 변경 금지
신고



Medium freecodecamp의 Per Harald Borgen의 글을 바탕으로 합니다.

(링크: How to create a Neural Network in JavaScript in only 30 lines of code)



※ 필요한 것 (클릭 시 링크)

Synaptic.js (The javascript architecture-free neural network library for node.js and the browser)

Node.js


자바스크립트로 만들어 볼 간단한 신경망은 XOR 식을 푸는 신경망입니다.

예를 들어, (0, 1), (1,0) 을 입력하면 1, 나머지 (0, 0), (1, 1)을 입력하면 0


먼저, 아래 그림은 시그모이드(sigmoid) 뉴런을 표현합니다. (앞으로 만들 네트워크는 시그모이드 뉴런 이용 ReLU를 쓰고 싶지만)

(입력 받은 모든 값을 0과 1 사이 값으로 squash)



(입력 = 5, 출력 = 1, 화살표 = 시냅스, 갈색 -2 = bias, .파랑 7, 3 = weights

왜 5가 되냐면 두 개의 입력 0, 1을 자신의 weights와 곱해서 bias(-2)와 더하기 때문)

1 * 7 + 0 * 3 + (-2) = 5


코드


첫 번째로 해야 할 일은 레이어(layer)를 만드는 작업입니다. 이것은 synaptic.js를 이용하면 new Layer()로 만들 수 있습니다.

이 함수에 입력하는 수는 각 레이어가 얼만큼의 뉴런을 가질 지를 결정합니다.


먼저 synaptic.js를 사용할 준비를 하고

// init
var synaptic = require('synaptic');
var Neuron = synaptic.Neuron,
	Layer = synaptic.Layer,
	Network = synaptic.Network,
	Trainer = synaptic.Trainer,
	Architect = synaptic.Architect;


아래와 같이 레이어를 만들어 줍니다. (입력 뉴런 2개, 히든 뉴런 3개, 결과 뉴런 1개)

// layers
var inputLayer = new Layer(2);
var hiddenLayer = new Layer(3);
var outputLayer = new Layer(1);


그 다음, 이 레이어들을 연결하고 새 네트워크를 instantiate 하는 방법은 아래와 같습니다.

inputLayer.project(hiddenLayer);
hiddenLayer.project(outputLayer);

var myNetwork = new Network({
	input: inputLayer,
	hidden: [hiddenLayer],
	output: outputLayer
});


이제 아래와 같은 코드로 네트워크를 2만 번 훈련 시킬 수 있습니다.

// train the network - learn XOR
var learningRate = .3;
for (var i = 0; i < 20000; i++) {
  // 0,0 => 0
  myNetwork.activate([0,0]);
  myNetwork.propagate(learningRate, [0]);
  // 0,1 => 1
  myNetwork.activate([0,1]);
  myNetwork.propagate(learningRate, [1]);
  // 1,0 => 1
  myNetwork.activate([1,0]);
  myNetwork.propagate(learningRate, [1]);
  // 1,1 => 0
  myNetwork.activate([1,1]);
  myNetwork.propagate(learningRate, [0]);
}


activate 함수는 forward propagation, 즉 값을 네트워크에 보내 활성화 시킵니다.

forward propagation을 할 때마다 weight와 bias를 업데이트해야 하는 데 즉, backpropagation을 해줍니다.


backpropagationpropagate 함수를 이용합니다.

사용 방법은 learningRate(매 번 얼만큼 weight를 조정 해야 하는 지)와 [0]과 [1] 처럼

입력 받은 값의 올바른 결과를 알려줍니다. (예를 들어 [0,1] = [1])


이제 테스트 해보는 방법은 아래와 같습니다.

console.log(myNetwork.activate([1,1]));


위 코드를 입력하면 약 0에 가까운 수가 나오고 [0,1]을 보내면 약 1에 가까운 수가 나옵니다.


첨부 파일은 코드입니다. 실행은 node *.js 로 하세요.

XOR_equation.js

코드 보기






저작자 표시 비영리 변경 금지
신고



새로운 느낌이 들고 오랜만에 해보니 재미도 조금 있었다.

몇몇 옵션이 저장이 잘 안되는 것 같다. (그래픽 설정, 멀티 맵 필터 설정)

맵 에디터 그래픽은 리마스터 상태가 아니다.

멀티에서 같은 방을 들어가기 어렵다.




저작자 표시 비영리 변경 금지
신고


regsetup.zip


첨부된 reg.exe를 이용하면 손 쉽게 레지스트리를 등록할 수 있다.


for /f 문 참고 링크


ex) 프로그램 경로 지정하기


Batch

FOR /F "usebackq tokens=2,* skip=2" %%A IN (`reg query "HKEY_CURRENT_USER\SOFTWARE\MY_SOFTWARE" /v Installed_Path`) DO set appdir=%%B

if not defined appdir goto exit


REGSETUP (by 은혼, GEZO) (reg.ini = 이름, reg.txt = 레지스트리)



reg.txt


[HKEY_CURRENT_USER\SOFTWARE\MY_SOFTWARE]

"Installed_Path"="%d\\"

저작자 표시 비영리 변경 금지
신고


Octave 4.2.1 윈도우64비트 인스톨러 다운로드


공식 사이트: https://ftp.gnu.org/gnu/octave/windows/octave-4.2.1-w64-installer.exe

(미러1) 구글 드라이브: https://drive.google.com/file/d/0B8diWwmdBkDGX3JvcjhxaVlDeHM/view?usp=sharing

저작자 표시 비영리 변경 금지
신고