ゼロから作るDeep Learningで素人がつまずいたことメモ:1章

# はじめに
ふと思い立って、[「ゼロから作るDeep LearningーーPythonで学ぶディープラーニングの理論と実装」](https://www.oreilly.co.jp/books/9784873117584/)と[「ゼロから作るDeep Learning(2)ーー自然言語処理編」](https://www.oreilly.co.jp/books/9784873118369/)を勉強することにしました。

ただ、なかなか時間も取れなくて続くのかどうかが非常に心配です。でも、2〜3年前に[「言語処理100本ノック2015」](http://www.cl.ecei.tohoku.ac.jp/nlp100/)をやりきった時は、[素人の言語処理100本ノック](https://qiita.com/segavvy/items/fb50ba8097d59475f760)としてQiitaに投稿し続けて、みなさんの「いいね」やコメントのおかげでやりきることができたので、今回もQiitaの力を借りることにしました。

今回はこの本で私がつまずいたことなどを1章ごとにメモしていこうと思います。誤りなどありましたら、[素人の言語処理100本ノック](https://qiita.com/segavvy/items/fb50ba8097d59475f760)の時と同様にご指摘いただけるとうれしいです。

（このメモの他の章へ：1章 / [2章](https://qiita.com/segavvy/items/d8e9e70437e35083a459) / [3章](https://qiita.com/segavvy/items/6d79d0c3b4367869f4ea) / [4章](https://qiita.com/segavvy/items/bdad9fcda2f0da918e7c) / [5章](https://qiita.com/segavvy/items/8707e4e65aa7fa357d8a) / [6章](https://qiita.com/segavvy/items/ca4ac4c9ee1a126bff41) / [7章](https://qiita.com/segavvy/items/8541c6ae1868d9b2b805) / [8章](https://qiita.com/segavvy/items/3eb6ea0ea2af68c96fcf) / [まとめ](https://qiita.com/segavvy/items/4e8c36cac9c6f3543ffd)）

:::note info
この記事は個人で作成したものであり、内容や意見は所属企業・部門見解を代表するものではありません。
:::

# 私の環境
今回はmacOS Mojaveで進めます。

実際の動作環境はMac on Macの形の仮想マシンです。ハードがMacなら普通はそのまま使うかと思いますが、開発環境の構築などで試行錯誤することを考えると、仮想マシンの方がスナップショットで分岐したり戻したりできて便利なんですよね。

以下、環境の詳細です。

|項目|環境　|
|:--|:--|
|ハード|Mac mini(Late 2012) |
|ホストOS|macOS Mojave バージョン 10.14.6|
|仮想化基盤|Parallels Desktop 15 for Mac Pro Edition バージョン 15.0.0 (46967)|
|ゲストOS|macOS Mojave バージョン 10.14.6|

この仮想マシンの構築については、[Parallels DesktopでmacOS仮想マシンを構築](https://qiita.com/segavvy/items/306bd6574a42c35d860c)にまとめています。

# 1章 Python入門
第1章はPython入門です。私は[言語処理100本ノック](http://www.cl.ecei.tohoku.ac.jp/nlp100/)をPythonでやっていたので、この章はPythonをおさらいする感じになりました。

# 1.1 Pythonとは
Pythonいいぞ、という説明です。

# 1.2 Pythonのインストール
本に従いAnacondaをインストールしました。特につまずくところはなかったのですが、本ではインストールについて3行くらいしか書かれていないので、軽く手順をまとめておきます。

まず、本に載っているAnacondaのサイト([https://www.anaconda.com/distribution](https://www.anaconda.com/distribution))で「Download」します。残念ながら英語です。
![スクリーンショット 2019-10-27 12.44.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/142ae128-2750-5a8e-9876-23cf619b3f64.png)

Pythonのバージョンを尋ねてくるので、本に従って3系である3.7を「Download」します。
![スクリーンショット 2019-10-27 12.45.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/b5858f44-823a-e8aa-b0cf-cca55e37258e.png)

ダウンロードしたインストーラを実行して、インストールします。これは日本語になっていました。
![スクリーンショット 2019-10-27 12.47.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/5199a461-22c0-9c91-7815-01c06f4f22fd.png)
途中でインストール先を尋ねられたので、私は「自分専用にインストール」にしました。Macを他の人と共用していないのであれば、これで良いかと思います。
![スクリーンショット 2019-10-27 12.47.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/6b120a54-02a7-2bce-f757-09f26a91d0c9.png)
![スクリーンショット 2019-10-27 12.48.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/ef61fd25-9083-0c76-9b99-5f77d7f54a93.png)
あとは普通に進めばインストールできます。

# 1.3 Python インタプリタ
ターミナルでバージョンの確認と、インタプリタの実行です。
![スクリーンショット 2019-11-02 12.17.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/3900f841-6133-c351-717f-bb1d07e450b5.png)
正しくインストールできている模様です。ちなみにPythonのバージョンは3.7.4でした。

# 1.4 Python スクリプトファイル
もしテキストエディタとしてmacOS標準のテキストエディットを使う場合は、フォーマットを標準テキストにしましょう。そうしないと拡張子`.py`で保存ができません。
![スクリーンショット 2019-11-02 21.40.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/6b61ea7c-9ad5-d975-77d7-f315f435cccf.png)
保存する時の「標準テキストのエンコーディング」は「Unicode (UTF-8)」のままで大丈夫です。
![スクリーンショット 2019-11-02 21.50.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/265c9622-95a9-41bd-ed54-4a6992980225.png)
ターミナルで保存した場所に`cd`して実行します。
![スクリーンショット 2019-11-02 22.00.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/8dbb9807-01bd-6132-7fc7-dd741c12e020.png)
いい感じ！日本語の扱いも問題なさそうです。

## (脱線) Visual Studio Codeの準備
テキストエディットはさすがにコーディングには向かないので、私はVisual Studio Codeを使うことにしました。インストールや使い方はググるとたくさん見つかるので、ここではサラッと導入の流れだけまとめます。

1. まずVisual Studio Codeのインストールです。私は前述のようにMac on Macの形で、普通にインストールすると表示周りでトラブってしまったので、[Parallels DesktopのmacOS仮想マシンでVisual Studio Codeをとりあえず使う](https://qiita.com/segavvy/items/802aa24d6893ef3b174c)に対応をまとめました。

2. Pythonで便利に使えるようにするために、Microsoftが配布する「Python extension for Visual Studio Code」を追加します。@tkdrecord さんの[MacのVisual Studio CodeでPythonの開発をできるようにしてみたよ](https://qiita.com/tkdrecord/items/6273481efbe9bb303889)が参考になります。
![スクリーンショット 2019-11-23 20.25.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/45bef84a-5f84-c868-2a6d-b173a1207e6e.png)
3. 日本語表記にするために、Microsoftが配布する「Japanese Language Pack for Visual Studio Code」を追加します。@ntkgcj さんの[Visual Studio Code [vsCode] 日本語化](https://qiita.com/ntkgcj/items/e77331932c7983dea830)が参考になります。
![スクリーンショット 2019-11-23 20.31.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/47cebe9e-d53a-6b04-15dc-4fe559148985.png)
4. コードの静的分析をしてくれるLinterとして[flake8](https://pypi.org/project/flake8/)を追加します。@firedfly さんの[VS Code コーディング規約を快適に守る](https://qiita.com/firedfly/items/00c34018581c6cec9b84)が参考になります。
![スクリーンショット 2019-11-24 23.32.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/66425e99-d30a-30a4-3300-0d34f9ab8e49.png)
5. コードを整形してくれるFormatterとして[autopep8](https://pypi.org/project/autopep8/)を追加します。これも@firedfly さんの[VS Code コーディング規約を快適に守る](https://qiita.com/firedfly/items/00c34018581c6cec9b84)が参考になります。
![スクリーンショット 2019-11-24 23.35.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/0dada42b-875f-08cb-e295-9695966a7713.png)
6. 関数説明などのdocstringを簡単に書けるように[autoDocstring](https://marketplace.visualstudio.com/items?itemName=njpwerner.autodocstring)を追加します。これも@firedfly さんの[VS Code コーディング規約を快適に守る](https://qiita.com/firedfly/items/00c34018581c6cec9b84)が参考になります。
![スクリーンショット 2019-11-24 23.37.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/32d3d86a-0bac-3838-3138-3b7794e140b5.png)
7. 起動時に右下にメッセージが出てきます。
![スクリーンショット 2019-12-03 9.23.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/85d19e4f-8849-a51a-3853-024bb5a03fb4.png)
conda(Anacondaに内包されています)の環境で統合ターミナルを使う時は、Visual Studio Codeの環境設定を引き継がない設定にした方がいいですよ。設定を変えますか？ということらしいので「Yes」しておきましょう。

これで、Visual Studio Codeでコードを書いて、右上の緑三角のボタンで簡単に実行できるようになりました。
![スクリーンショット 2019-12-03 9.35.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/cc383202-10dd-b5c1-0001-3cd51d0c3766.png)
いい感じ！

# 1.5 NumPy
NumPyはAnacondaに含まれているので、そのまま使えます。
![スクリーンショット 2019-11-02 22.09.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/7a979d84-88eb-34b1-c1e8-5887da5c2ba4.png)

# 1.6 Matplotlib
MatplotlibもAnacondaに含まれているので、そのまま使えます。
![スクリーンショット 2019-11-02 22.27.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/39749fc8-4273-b759-d632-c1dd321f6476.png)
なお、本で使われている`lena.png`という画像は、この本で出てくる他のソースと合わせて、オライリー・ジャパンのGitHubリポジトリで公開されていますので、この機会に一括でダウンロード（clone）しておきましょう。

まず、この本のGitHubリポジトリ([https://github.com/oreilly-japan/deep-learning-from-scratch](https://github.com/oreilly-japan/deep-learning-from-scratch))へアクセスします。
![スクリーンショット 2019-11-02 22.41.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/41f9e5fc-cc04-abaf-f192-3d6f4a3839ad.png)
ここで、「Clone or download」を選び「Download ZIP」すればOKです。
![スクリーンショット 2019-11-02 22.42.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/f3cb812a-f882-7617-464e-a948ae03a4f9.png)
ダウンロードした中の`dataset`フォルダーに`lena.png`がありますので、本に従ってこのファイルのパスを指すようにコードを書けば表示できます。
![スクリーンショット 2019-11-02 22.50.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/139624/003739c0-08da-467f-6e7f-5eab767ac223.png)
ちなみに、この女性は誰？という方はウィキペディアの[レナ（画像データ）](https://ja.wikipedia.org/wiki/%E3%83%AC%E3%83%8A_(%E7%94%BB%E5%83%8F%E3%83%87%E3%83%BC%E3%82%BF))の解説をどうぞ。

# 1.7 まとめ
本にもあるように、この章はPythonやNumPy、Matplotlibの必要最低限の説明になっています。私はすでに[言語処理100本ノック](http://www.cl.ecei.tohoku.ac.jp/nlp100/)で触っていたのでおさらいにちょうど良い感じでしたが、物足りない方は本で紹介されている参考書籍などで勉強されると良いかと思います。

この章は以上です。誤りなどありましたら、ご指摘いただけますとうれしいです。
（このメモの他の章へ：1章 / [2章](https://qiita.com/segavvy/items/d8e9e70437e35083a459) / [3章](https://qiita.com/segavvy/items/6d79d0c3b4367869f4ea) / [4章](https://qiita.com/segavvy/items/bdad9fcda2f0da918e7c) / [5章](https://qiita.com/segavvy/items/8707e4e65aa7fa357d8a) / [6章](https://qiita.com/segavvy/items/ca4ac4c9ee1a126bff41) / [7章](https://qiita.com/segavvy/items/8541c6ae1868d9b2b805) / [8章](https://qiita.com/segavvy/items/3eb6ea0ea2af68c96fcf) / [まとめ](https://qiita.com/segavvy/items/4e8c36cac9c6f3543ffd)）