こんにちは、エンヂニアです。
「躓きポイント解説:ゼロから作るDeep Learning」シリーズでは、「ゼロから作るDeep Learning」(斎藤康毅 著、オライリージャパン)を使って勉強した際にこういう点が素人的には分かりにくかった、もう少し詳しく説明してほしかった、という点を記録し、説明を試みます。Deep Learningの基礎、数学的な面は丁寧に説明されていると思いますが、Pythonコードの説明は完全素人のエンヂニアには不十分でしたので、そこに焦点を当てたいと思います。
躓きポイント1: 「1.2 Pythonのインストール」
「ゼロから作るDeep Learning」ではPythonディストリビューション(各種ライブラリが一まとめにされたもの)の一つである、”Anaconda”のインストールを推奨していますので、早速インストールします。下記サイトからインストーラーをダウンロードします。
Anacondaインストールにおける躓きポイントは、”Advanced Installation Options” windowに関するものです。結論的には、本ウィンドウにおいては、2つともチェックボックスをチェックして、”Install”をクリックして次に進んで下さい。
このウィンドウ、デフォルトでは、上の”Add Anaconda to my PATH environment variable”にはチェックがついておらず、且つ、”Not recommended.”と赤文字で警告がされています。
こう書かれると我々Python素人的にはチェックをためらいますよね。
以下では、Pathを設定した場合としない場合のPythongの起動方法の違いについて見て行きます。
“Add Anaconda to my PATH environment variable”にチェックをしなかった場合のPythonの起動方法
WindowsにおいてはWindows PowerShell(もしくはコマンドプロンプト)でPythonインタープリタを起動します。
下のPowerShellウィンドウでは、単純に”Python”とタイプしてみます。黄色い四角はユーザー名です。
エラーメッセージが出てしまいました。当たり前ですよね、PATHが通っていないのですから。PowerShellは、”python”なんていうコマンドもプログラムも知らない、と言っているわけです。
続いて、カレントフォルダからの相対パスを指定して再度Pythonインタープリタを起動してみます。
うまくいきましたね。
まとめると、”Add Anaconda to my PATH environment variable”をチェックしない場合、
“相対パス\python”
を、入力することでPythonインタープリタを起動することができます。
これの何が問題か?
何も問題ではありません。私の知る限り、ただ単に相対パスをいちいち指定するのが面倒なだけです。
面倒なだけ、とは言え、Pythonスクリプトを実行するような段階(例えば第3章)になると、カレントフォルダを特定の場所に移動してからPythonを起動、ということも頻繁に出てきます。
そうなると、相対パスが
“..\..\..\xxxxx\Anaconda\python”
ということも出てきます。
これを毎回タイプして構わない、という人は、実際どのような問題を回避できるのかわかりませんが、AnacondaのRecommendation通り、”Add Anaconda to my PATH environment variable”をチェックしないでインストールしてみて下さい。
“Add Anaconda to my PATH environment variable”にチェックをした場合のPythonの起動方法
一方、”Add Anaconda to my PATH environment variable”をチェックした場合、Pythonの起動ははるかに簡単です。
一度Anacondaをアンインストールして、今度は”Add Anaconda to my PATH environment variable”をチェックした上で再インストールし、PowerShellを起動します。
今度は単純に”python”とタイプしてみます。
うまく起動できましたね。
繰り返しになりますが、このメリットとしては、起動前にどこにカレントフォルダを移そうが、”python”だけでインタープリタを起動できてしまうところです。
以上が躓きポイント1になりますが、我々Python素人の躓きポイント、と言うより、正直、私がパソコンに詳しくない為に、Anacondaインストーラーが警告する問題が具体的にどういうものなのか見えない、が故に多少の躓きを感じただけ、と言うポイントでしょうね。
因みにPATH環境変数って何?と言う方は、下記のサイトが参考になると思います。
躓きポイント2: TAB vs. 4 Spaces
2番目の躓きポイントは、他言語経験ありのPython学習者には奇異に感じられるインデント(各行の左側の空白スペース)についてです。
このインデントは、コロン「:」と組み合わせて、「for文」の繰り返し処理の中身、「if文」で条件が満たされた場合に実行する処理の中身や関数の中身等の記述に使われます。
「ゼロから作るDeep Learning」やその他のサイトにもある通り、タブ文字でも4つの空白文字でも良い訳ですが、一点だけ注意点があります。それは、それぞれの「for文」や関数の中では統一的にいずれかを使わなければならない、ということです。
1.4.2(ページ11)を参考に作成した次の例を見て下さい。
“TabError: inconsistent use of tabs and spaces in indentation”というエラーが出ましたね。これは、赤枠は4つの空白文字であるのに対し、黄色枠は2つのタブ文字を使ったためです。
一方、全てタブ文字で同じプログラムを書くと、次のようにうまくいきます。
第1章については、以上になります。と言うのも、残りはPythonの超概要が記載されていて、ど素人的には取り敢えず、なるほどね、と眺める他ないですね。ちゃんとそれぞれのプログラムをタイプしながら進めていきましたが、特に躓くところもなかったように思えます。
残りの章、特に3章以降、実際にDeep Learningのモデルを構築しながら一緒にPythonとディープラーニングを学んでいきましょう。