2015-04-01

Visual C++ でユーザ定義マクロを追加する方法

忘れてしまっていたので、メモ。

Visual C++ 2013 英語環境の場合。

メニューの [View]-[Property Manager] を選択する。Property Manager が開く。

右クリックのコンテキスト メニューから [Add New Project Property Sheet...] を選択して、新規プロパティ シートを追加する。

追加したプロパティ シートをダブルクリックする。

画面左の [Common Properties]-[User Macros] を選択して、[Add Macro] ボタンを押してマクロを追加する。

[参考]

My Private Adversaria: VisualC++ のマクロ変数を追加する方法:
http://myprivateadversaria.seesaa.net/article/118865951.html

Create user-defined environment variables (macros) - pinyotae:
https://sites.google.com/site/pinyotae/Home/visual-studio-visual-c/create-user-defined-environment-variables-macros

2015-03-03

Visual Studio 2013 の git でリモート設定を削除する方法

Visual Studio 2013 の git でリモート設定を間違ってしまった場合の削除方法は下記のとおりです。

[Team Explorer] でホームアイコンを押して、[Unsunced Commits] を選択します。
[Actions]-[Open Command Prompt] を押します。
コマンドプロンプトで、「git remote -v」と入力して [Enter] キーを押します。
「origin ...」と表示されるのを確認します。
「git remote remove origin」と入力して [Enter] キーを押します。
コマンドプロンプトを閉じます。
[Unsunced Commits] の画面に [Publish to Remote Repository] が再び表示されます。

2015-02-18

エフェメラルポート

TCP/IP でサーバに接続しようとすると、パケットを受信するためにローカル側にポートが自動で割り当てられます。
Windows では 1025~5000 番の範囲のポートが自動的に割り当てられると記憶していたのですが、それは昔の話で、Windows Vista あたりからは IANA が提唱する 49152~65535 番の範囲のポートが使われているようです。
エフェメラルポート - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%95%E3%82%A7%E3%83%A1%E3%83%A9%E3%83%AB%E3%83%9D%E3%83%BC%E3%83%88

2015-02-14

ニューラルネットの活性化関数 その2

記事「ニューラルネットの活性化関数 その1」の閲覧数がそこそこあるので、近年の活性化関数も記しておきます。

(1) Rectified linear unit (ReLU)
(2) Maxout activation functions (Maxout)

以下、簡単に解説しますが、不正確な表現も含みますので、正確な解釈は論文を読んでください。

(1) Rectified linear unit (ReLU) について

活性化関数は、
f(x) = max(0, x)
で、x > 0 の時は f(x) = x、x <= 0 の時は f(x) = 0 となります。
導関数は、
x > 0 の時は f'(x) = 1
です。x <= 0 の時は f'(x) = 0 となるので、結合荷重は変化しません。

こんな簡単な活性化関数で大丈夫なのかと思われるかもしれませんが、隠れ層のユニットの数がそこそこあれば、問題ないようです。

詳しくは次の Wikipedia のページを参照してください。
Rectifier (neural networks) - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Rectifier_(neural_networks)
(2) Maxout activation functions (Maxout) について

活性化関数は、複数の異なる傾きと切片の直線関数 f(x) = ax + b の最大値 (max) を求めて凸関数を作り、凸関数と凹関数(=凸関数の上下が逆)を組み合わせて、様々な関数を近似するというものです。

詳しくは次の論文を参照してください。
[1302.4389] Maxout Networks
http://arxiv.org/abs/1302.4389

[関連記事]

2015-02-13

Java の InterruptedException の扱い方

Java の InterruptedException の扱い方は、IBM の developerWorks のサイトにある記事が参考になります。
Java theory and practice: Dealing with InterruptedException
http://www.ibm.com/developerworks/library/j-jtp05236/

2013-12-10

Visual C++ でバイトの順序を逆にする関数

Visual C++ でバイトの順序を逆にする関数
_byteswap_uint64, _byteswap_ulong, _byteswap_ushort (CRT) http://msdn.microsoft.com/en-us/library/a3140177%28v=vs.71%29.aspx

がランタイムに存在していたのを下記のサイトの記事で知りました。
melancholic afternoon
http://homepage1.nifty.com/herumi/diary/1312.html#6

2013-11-13

ニューラルネットによる正規分布の学習

ニューラルネットによる正規分布の学習のビデオです。
以前 YouTube で見つけたのを思い出したので、紹介しておきます。

artificial neural network / normal distribution
Artificial neural network learns normal distribution using back propagation

2013-10-23

Android と OpenCL と RenderScript

Andoid 4.3 では OpenCL が使えなくなっているそうです。
代わりに RenderScript というものがあるようです。
RenderScript | Android Developers
http://developer.android.com/guide/topics/renderscript/compute.html
ざっと見た感じでは、float4 型はありましたが、さすがに float16 型はないようです。

モバイル端末でGPUを使って演算できると、自宅で省電力な計算クラスタの構築に使えるので、発展を期待したいです。

2013-10-19

Visual Studio 2013 がリリース

Visual Studio 2013 がリリースされたので、C++11 の対応状況を調べてみました。
C++11 Features (Modern C++)
http://msdn.microsoft.com/en-us/library/vstudio/hh567368%28v=vs.120%29.aspx
「Non-static data member initializers」や「Initializer lists」がサポートされたのがうれしいですね。

あと、Git がデフォルトでサポートされているのもいい感じです。

2013-08-25

ニューラルネットのシグモイド関数と tanh 関数の関係

ニューラルネットの標準シグモイド関数と tanh 関数の関係は次のようになります。

標準シグモイド関数は、
\[ sigm(x) = \frac{1}{1 + e^{-x}} \]
です。

tanh 関数の別表現は、
\[ \tanh(x) = -1 + \frac{2}{1 + e^{-2x}} \]
となります。

よって、
\[ \tanh(x) = -1 + 2sigm(2x) \]
となります。

つまり、標準シグモイド関数の入力値を2倍にして、出力値の値域を (-1, 1) に引き伸ばした感じです。

関連
参考