0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

matplotlibでグラフ生成して損失関数の可視化を目指そう

Posted at

matplotlibとは

こんにちはchihiroです。
ディープラーニングを学習をしていると、ほぼ必ず目につく「損失関数」。
活性化関数はだいたい直線ではなく、数がぐにゃぐにゃと曲がった連続した関数なので、容易に最小値を求めるのは難しいです。
だったらせめて自分で作った損失関数はグラフにしてみれたらいいよねと思い、今回は関数をグラフに出力するmatplotlibを紹介させていただきます。

matplotlibの公式ページです。
簡単な使用方法、APIドキュメントが載っています
https://matplotlib.org/

準備

pythonを入れている方ならターミナルでpipを使えばすぐインストールできます。

pip install matplotlib          

インストールできない場合はpipのバーションが古い可能性があるので、以下のコマンドを入力して最新のバージョンに変えて、先ほどのインストールのコマンドを実行してみてください。

python -m pip install --upgrade pip 

matplotlibを使用する際は、import文がいるので、ファイルの頭にimport文を入れておきます

import matplotlib.pylab as plt

ただvscodeでインポートを書いても下の画像みたいに黄色線が出ますね。。。
もしかしたらmatplotlib自体とpythonのバージョンに問題があるのかもしれません。
今の所matplotlibは問題なく使えています。

グラフを書いてみる

基本的にグラフを出力するまでに

  • 関数の定義
  • 引数の変数を用意して代入
  • グラフの縦横のラベルをつける
  • matplotlibへプロット
  • 出力

の工程があります。簡単なグラフを出力してみましょう。

import numpy as np#NumPyの利用
import matplotlib.pylab as plt

def function_1(x):
    return 0.1*x**2 + x     #f(x) = 0.1x^2 + x

x = np.arange(0.0, 10.0, 0.1) #0から10まで0.1刻み
y = function_1(x)             #代入
plt.xlabel("x")               #xラベル
plt.ylabel("f(x)")            #yラベル
plt.plot(x, y)                #プロット
plt.show()                    #グラフ表示

ここでは行列を利用できるNumPyをインポートしています。これはmatplotlibとは別にインストール(ターミナルで pip install numpy)が必要です。

引数が一つの定数だけだと、f(x)の値も一つしか出てこないので、np.arange(0.0, 10,0, 0,1)で引数を100個錬成しています。

出力すると以下のように青色のグラフが出てきます
スクリーンショット 2023-05-28 16.47.10.png

まとめ

例が簡単なグラフでしたが、実際にディープラーニングで使う損失関数となると、そもそも最小値がありそうな位置がどこなのか分からんわという関数もあると思うので、教材で出た関数の答え合わせみたいなものに使うのもいいですね。

参考文献

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?