LoginSignup
3
2

More than 3 years have passed since last update.

なぜなに? Deep Learning   科学計算ライブラリ Numpy 編

Posted at

はじめに

これから、機械学習で使われる科学計算ライブラリを数記事に渡って説明していきます。
今回はNumpy編です。
全体ではなく機械学習で使われる機能を中心に紹介していきます。

また、Jupyter Notebookでコードを書いてくので、
コマンドプロンプトと動作が異なることには注意してください。

目次

  • Version確認
  • Numpy 基礎編
  • 最後に
  • 参考文献

Version確認

version
import numpy as np
np.__version__
#'1.16.4'

Numpy 基礎編

Numpyは多次元配列データを扱うライブラリです。
多重配列や行列を扱う際は、大変便利です。
行列の計算を理解していると、すんなり入ってきます。
(僕は行列が未熟だったので、数学の教科書も見ながら学んでました。時節、紙で計算したりしてます。)

Numpyをインポート
import numpy as np

Numpyはよくnpというモジュール名に変換します。
(僕はそれ以外のモジュール名は見たことはありませんでした。)

配列の定義
a = np.array([1,2,3,4,5])
# []を忘れないで下さいね
出力
>>>a
array([1, 2, 3, 4, 5])
>>>print(a)
[1 2 3 4 5]
>>>type(a) #型の確認
numpy.ndarray
多重配列時
>>>b = np.array([[1,2,3,4,5],[6,7,8,9,10]])
>>>b
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
>>>print(b)
[[ 1  2  3  4  5]
 [ 6  7  8  9 10]]

行・列を表示
>>>a.shape
(5,)
>>>b.shape
(2,5)
np.arangeで要素を自動作成
>>>np.arange(1,10,2)
array([1, 3, 5, 7, 9])
>>>np.arange(2,11,2)
array([ 2,  4,  6,  8, 10])
np.reshapeで行列を変換する
>>>d = np.arange(1,11,1)
array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])
>>>d.shape #shapeで配列の形を表示
(10,)
>>>d.reshape(2,5) #2行×5列の行列
array([[ 1,  2,  3,  4,  5],
       [ 6,  7,  8,  9, 10]])
>>>d.reshape(5,2) #5行×2列の行列
array([[ 1,  2],
       [ 3,  4],
       [ 5,  6],
       [ 7,  8],
       [ 9, 10]])
>>>d.reshape(10,1) # 10行×1列の行列
array([[ 1],
       [ 2],
       [ 3],
       [ 4],
       [ 5],
       [ 6],
       [ 7],
       [ 8],
       [ 9],
       [10]])
np.arangeとreshapeでこんなこともできる
>>>np.arange(1,10).reshape((3,3))
array([[1, 2, 3],
       [4, 5, 6],
       [7, 8, 9]])

算術計算

配列同士で計算もできます。
ただし、計算する配列は行と列の数を一致するようにしてください。

算術演算
>>>x = np.array([1.0,2.0,3.0])
>>>y = np.array([4.0,5.0,6.0])
>>>x+y
array([5., 7., 9.])
>>>x*y
array([ 4., 10., 18.])
>>>x-y
array([-3., -3., -3.])
>>>x/y
array([0.25, 0.4 , 0.5 ])

ブロードキャスト

配列の内部データに直接演算できます。
機械学習の中で内積は必ず出てきますので、仕組みを覚えときましょう。
内積A・Bでは、Aの列の数とBの行の数を合わせること

行列の積(内積,ドット積)
>>>z = np.array([1,2,3])
>>>z.shape
(3,)
>>>v =np.array([[2],[3],[4]])
>>>v.shape
(3, 1)
>>>np.dot(z,v)
array([20])
内積
>>>e = np.array([[1,2,3],[4,5,6]])
>>>e
array([[1, 2, 3],
       [4, 5, 6]])
>>>f =np.array([[3,3],[3,3],[3,3]])
>>>f
array([[3, 3],
       [3, 3],
       [3, 3]])
np.dot(e,f)
array([[18, 18],
       [45, 45]])

最後に

今回はNumpyの簡単な部分を書いていきました。
次は、行列を使ってニューラルネットワークの計算の仕組みを書いていきます。

参考文献

  • ゼロから作るDeep Learning
  • Pythonで動かして学ぶ! あたらしい 機械学習の教科書
  • Pythonによる あたらしいデータ分析の教科書
3
2
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
3
2