とらりもん - 機械学習入門: ニューラルネットワークの基本構造 Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
([[機械学習入門]]に戻る!)
ここは, ニューラルネットワークの基本構造を学ぶ。テキストは「ゼロから作るDeep Learning」の第1章から第3章までである。
!第1章について
第1章はほとんどがpythonの基本であり, 諸君は既に知っていることが多いだろう。しかし, 以下については, 今後必ず必要になってくる知識だが, 理解が浅かったり知らなかったりする可能性があるので, しっかり読んでおこう。
問1-1: 以下についてyes/noで答えよ:
# データ型(P5)について理解しているか? type( )という関数で出てくる。特にbool型(P7)をしっかり理解しよう。
# ディクショナリ(P7)について, 特にその作り方と使い方を理解しているか?
# if/else文やfor文(P8)の書き方, 特にインデントの意味とやり方(タブは使わない!!)を理解しているか?
# クラスの「コンストラクタ」(P10)を理解しているか?
# numpy.ndarrayの演算の「ブロードキャスト」という機能(P14)を理解したか?
# numpy.ndarrayのflatten()というメソッド(P15)を理解したか?
今後, 諸君は多くの画像を扱うことになるので, 画像の取り扱いのスキルも上げていこう。P19には, lena.pngという画像ファイルが出てくる。これは画像処理工学でよく使われる有名なサンプルデータである。まずはこの画像をサンプルに, いくつかの処理を学ぼう。
問1-2: そのために便利な"[[imagemagick|https://imagemagick.org/]]"というライブラリと"exiftool"というコマンドをインストールせよ
$ sudo apt install imagemagick exiftool
(Mac OSXなど, Linux以外の環境でやっている人は, 自力でなんとかしてください)
問1-3: lena.pngという画像ファイル(P19)を見つけ(ダウンロードしたzipファイルの中に入ってるはず), そのディレクトリにcdし, 以下のコマンドを実行せよ:
$ exiftoollena.jpglena.png
$ displaylena.jpglena.png
exiftoolコマンドで, lena.png画像の詳細情報が表示される。displayコマンドで, lena.png画像そのものが表示される。
lena.pngは256ピクセル x 256ピクセルのカラー画像である。これを64ピクセル x 64ピクセルにしてみようピクセルのJPEG画像にしてみよう:
$ convertlena.jpg lena.png -resize 64 lena64.jpg
$ exiftool lena64.jpg
$ display lena64.jpg
ここでconvertもdisplayも, imagemagickライブラリのコマンドである。imagemagickには膨大な数のコマンドがあり, 様々な画像処理をコマンドで実行できる。
問1-4: lena.pngを, 512ピクセル x 512ピクセルのJPEG画像に変換し, その詳細情報を表示せよ。
!第2章について
第2章は, ニューラルネットワークをpythonで実施するための小さな練習問題として, 単純パーセプトロンの実装について説明している。とはいえ, ここで出てくるANDゲートやORゲートといった論理回路に関する話題はニューラルネットワークには直接には無関係なので, さらっと飛ばしてよい。P26-P27の, 「重みとバイアスの導入」「重みとバイアスによる実装」で出てくるpythonコードを理解できればOK。
問2-1: pythonのnumpy.ndarrayクラスのインスタンスとして2つの数ベクトルa=(1, 2, 3, 4)とb=(5, 4, 3, 2)を表現し, その内積をnumpy.sum関数を使って計算せよ。
問2-2: 前問と同じことを, numpy.sum関数でなくnumpy.dot関数を使って行え(P58参照)。
ここは, ニューラルネットワークの基本構造を学ぶ。テキストは「ゼロから作るDeep Learning」の第1章から第3章までである。
!第1章について
第1章はほとんどがpythonの基本であり, 諸君は既に知っていることが多いだろう。しかし, 以下については, 今後必ず必要になってくる知識だが, 理解が浅かったり知らなかったりする可能性があるので, しっかり読んでおこう。
問1-1: 以下についてyes/noで答えよ:
# データ型(P5)について理解しているか? type( )という関数で出てくる。特にbool型(P7)をしっかり理解しよう。
# ディクショナリ(P7)について, 特にその作り方と使い方を理解しているか?
# if/else文やfor文(P8)の書き方, 特にインデントの意味とやり方(タブは使わない!!)を理解しているか?
# クラスの「コンストラクタ」(P10)を理解しているか?
# numpy.ndarrayの演算の「ブロードキャスト」という機能(P14)を理解したか?
# numpy.ndarrayのflatten()というメソッド(P15)を理解したか?
今後, 諸君は多くの画像を扱うことになるので, 画像の取り扱いのスキルも上げていこう。P19には, lena.pngという画像ファイルが出てくる。これは画像処理工学でよく使われる有名なサンプルデータである。まずはこの画像をサンプルに, いくつかの処理を学ぼう。
問1-2: そのために便利な"[[imagemagick|https://imagemagick.org/]]"というライブラリと"exiftool"というコマンドをインストールせよ
$ sudo apt install imagemagick exiftool
(Mac OSXなど, Linux以外の環境でやっている人は, 自力でなんとかしてください)
問1-3: lena.pngという画像ファイル(P19)を見つけ(ダウンロードしたzipファイルの中に入ってるはず), そのディレクトリにcdし, 以下のコマンドを実行せよ:
$ exiftool
$ display
exiftoolコマンドで, lena.png画像の詳細情報が表示される。displayコマンドで, lena.png画像そのものが表示される。
lena.pngは256ピクセル x 256ピクセルのカラー画像である。これを64ピクセル x 64
$ convert
$ exiftool lena64.jpg
$ display lena64.jpg
ここでconvertもdisplayも, imagemagickライブラリのコマンドである。imagemagickには膨大な数のコマンドがあり, 様々な画像処理をコマンドで実行できる。
問1-4: lena.pngを, 512ピクセル x 512ピクセルのJPEG画像に変換し, その詳細情報を表示せよ。
!第2章について
第2章は, ニューラルネットワークをpythonで実施するための小さな練習問題として, 単純パーセプトロンの実装について説明している。とはいえ, ここで出てくるANDゲートやORゲートといった論理回路に関する話題はニューラルネットワークには直接には無関係なので, さらっと飛ばしてよい。P26-P27の, 「重みとバイアスの導入」「重みとバイアスによる実装」で出てくるpythonコードを理解できればOK。
問2-1: pythonのnumpy.ndarrayクラスのインスタンスとして2つの数ベクトルa=(1, 2, 3, 4)とb=(5, 4, 3, 2)を表現し, その内積をnumpy.sum関数を使って計算せよ。
問2-2: 前問と同じことを, numpy.sum関数でなくnumpy.dot関数を使って行え(P58参照)。