Deep Learning

Deep Learning

Python♪ラムダ式でクラスのインスタンス変数を操作するテクニック

ラムダ式「f = damdba 変数: 式」の変数にインスタンス変数、式にクラスメソッドを指定すると、クラスのインスタンス変数をパラメータとしてクラスを操作することができます。これはディープラーニングの学習にも利用できるテックニックです。
Deep Learning

NumPy♪nditerを使うと様々な次元数に対応できる

NumPyでは、引数の次元数を限定しないコーディングができるように様々な関数が用意されています。nditerもそのひとつであり、配列の要素を順番に指定することができます。なお、op_flags=['readwrite']についても簡単に紹介します。
Deep Learning

NumPy♪ファンシーインデックスが苦手だと感じたら

ファンシーインデックスの簡単な例はすぐに理解できますが、使い方の仕組みが分からず悩んでしまいました。キーワードは「ブロードキャスト」「インデックスとして渡す配列の数」「list指定とNumPy配列指定の違い」です。ルールがわかればスッキリします。
Deep Learning

NumPy♪ブロードキャストを雰囲気で理解していませんか?

NumPyのブロードキャストは非常に強力な機能です。だから、なんとなく雰囲気で使うのはもったいない。ルールはシンプルですので、一度だけしっかり理解しましょう。NumPyの使い勝手が格段に向上するはずです。ブロードキャストあってのNumPyです。
Deep Learning

NumPy♪関数maxやsumにおけるkeepdims指定の図解

keepdims指定によって配列の次元数が維持されるのはわかります。でも、各次元の長さが、どのように変化するのかについては、すっきりしない方も多いのではないでしょうか。そこで、計算前後の変化について図を使って説明したいと思います。
Deep Learning

NumPy♪axis指定を易しく図解(axis = -1とは)

NumPyの関数max等ではaxisで方向を指定しますが、axisの番号と方向の対応が分かりにくく、axisを使うたびに調べ直していませんか。また、計算後の配列の次元数や各次元の大きさについて、モヤモヤしている人も多いのではないでしょうか。
Deep Learning

Python♪NumPyのa[[0], 0, 0:1]は何次元の配列になる?

NumPyの配列の要素はスライスやリスト(配列)を使って部分的に要素を抜き出せますが、抜き出した配列の次元がどうなるのか混乱しませんか?しかし、実は抜き出し後の配列の次元数は機械的に判断できます。最初に知っておくと頭に入りやすくなります。
Deep Learning

Python♪NumPyのa[i, j, k]とa[i][j][k]の違い

NumPy配列では要素を参照するときに、a[i, j, k]とa[i][j][k]という2つの表記法があります。「そうだっけ」と思った方はその違いを整理しておきましょう。計算速度、データへのアクセスの考え方が違いますので注意が必要です。
Deep Learning

Python♪ディープラーニングを高速化するバッチ処理とは

ディープラーニングではバッチ処理という方法が使えます。難しそうに聞こえますが、バッチ処理とは「データをまとめて計算する処理」のことです。そして、まとめて計算することで速くなります。具体例によりバッチ処理の概要を説明し、速度の比較を行います。
Deep Learning

Python♪関数で複数の値を返すタプルの便利な機能

「タプルはあまり使いどころがない?」と思っていませんか?でも、タプルを使うと複数の値を一度に渡すことができます。特に関数の返り値(return)での使用は必須レベル。「ゼロから作るDeep Learning」でも多用していたので記事にしました。