ぴろの狂人日記

2014年から頑張ってブログを継続しようと思います。「継続と習慣」を今年の目標にしたので、頑張って更新を続けようと思います。おいおいはレビューや数学や認知科学などについて記事を書いていければと思っています

シグモイド関数の描画

gnuplotもインストールしたし、matplotlibも使える状態だしということで、なんだかんだ可視化やグラフ描画をするツールは割りと揃ってきました。

それぞれのツールの使い方の勉強という意味含め、ニューラルネットとかやるときのシグモイド関数関するの振る舞いをイメージしておきたいなども理由もあるので、シグモイド関数を描画してみようと思い描画しました。

gnuplotでの描画

gnuplotでもfor文が使えるらしいのでそれを使います。
ターミナルを起動して、gnuplotを起動します。

hiroshi-no-MacBook-Air:Pro-tr hiroshi$ gnuplot     #gnuplotと打ち込んでreturnを押す


起動したら次のように打ちます。

gnuplot> set yrange[0:1]       #見栄えを良くするための設定。y軸方向の描画範囲の指定。
gnuplot> plot for [i=0:10] 1/(1+exp(-i*x/10))


これを実行すると、次のような図が出てきます。

 
 


gnuplotを起動したときに、毎回表示されるバージョンを確認しましょう。
どうやら、plot forという書き方はバージョン4.4からの機能のようです。
(参考:

termoshtt.blog110.fc2.com

)

matplotlibでの描画

matplotlibでは次のように描画します。 matplotlibとscipyがインストールできていることは前提。 インストールできていない場合はまずこちら。

piroshhh.hatenablog.com

 

piroshhh.hatenablog.com

from matplotlib import pyplot as plt
import scipy as sp

x=sp.arange(-10,10,0.1)
for t in range(10):        #必要なグラフは先にすべて生成する。
  y=1/(1+sp.exp(-(2*t*x/10)))
  plt.plot(x,y)         


plt.show()   #最後にまとめて描画すると重ねて表示される。


matplotlibの使い方の説明にもなってしまいますが、グラフを重ねて描画するときは、先にplt.plot()、plt.plot()という感じで必要なグラフをすべて生成して、最後にplt.show()をして最後に描画する。

上記を例えば、テキストファイルに書き、sigmoid.pyという名前で保存。sigmoid.pyがあるカレントディレクトリに移動して、

hiroshi-no-MacBook-Air:Pro-tr hiroshi$ python3 sigmoid.py


とコマンドを打って実行すると、次のような画面が出てきます。

 


for文のところで、あまり数を刻みすぎてしまうと、グラフが表示されたときよくわからない表示になってしまうので、適当に間引いて描画したほうがそれらしくみえる。

参考にしたページや文献・書籍

termoshtt.blog110.fc2.com


シグモイド関数 - Wikipedia