post Image
Ubuntu環境上でPyCharmを使った機械学習の環境を構築する(TensorFlowも導入するよ!)

昨今流行りの機械学習ですが、環境構築が難しい場面が多く感じられたので、備忘録兼一つの情報提供になればと思い記事にします。

環境
Windows10上のUbuntu 16.04.1 LTS(VirtualBoxを使用)
※環境構築に関しては他サイトなどを参考にしてください [1] [2] [3]

記事の目的

この記事はインストールされたばかりのゲストOSであるUbuntuで機械学習やディープラーニングをPyCharmで行えるようにするというものです。具体的にはTensorFlowやNumPyなどを使用できるようにする。

※今回はCPUのみのTensorFlow環境をつくります。
※間違いやほかにうまいやり方がありましたら指摘していただけると嬉しいです。

手順

  1. Anaconda3のインストール(これにより基本のPython環境を整えます)
  2. Python3.5環境の構築
  3. PyCharmのインストール・設定
  4. TensorFlowのインストール
  5. 確認

※記事を通して出てくるコードはLinuxコマンドかPythonです。コードの上に特に記述がなければLinuxコマンドです。また、Linuxコマンドはすべて一般ユーザー(管理者ではない)として実行しています($などの表記は省略してます)。

Anaconda3のインストール

こちらから、OSのビットやPythonのバージョンなどを確認して、適切なものをインストールします。私はLinux向けPython3.6のインストーラをダウンロードしました。詳しくはこちら[4]を参照してください。
anaconda_install.PNG

インストールが終わったら、~/Downloadsディレクトリ配下にshファイルができています。以下のコマンドを打ちます。[4]のサイトを参考にして進めます(基本yes/noと聞かれたらyesそれ以外はEnterを押してれば大丈夫です)。
bash ~/Downloads/Anaconda3-4.3.0-Linux-x86_64.sh
echo 'export PATH=/home/user/anaconda3/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

※(Anacondaのバージョンは現時点では上記のバージョンがインストールされるようです。バージョンは確認してから、コマンドを実行してください)
これで以下のコマンドでcondaのバージョンが表示できればOKです。

conda -V #conda 4.3.8

ついでにPythonのバージョンも確認します。
python --version #Python 3.6.0 :: Anaconda 4.3.0 (64-bit)

pythonのバージョンは3.6.0のようです。
ここで注意しなければならないのは、TensorFlowは現時点では、Python3系の場合3.5までに対応しているようです。そのため、これからanacondaでTensorFlowのための環境を構築します。

Python3.5の環境を作る

以下のコマンドを実行してください。tfという名前でPython3.5バージョンの環境を作ります。

conda create -n tf python=3.5 anaconda

これで、source arctivate tfでpython3.5の環境に入れるようになります。コマンドを実行しましょう。
(終了する場合はsource deactivate)

source arctivate tf

TensorFlowのインストール

TensorFlowをインストールします。下記コマンドを実行してください。

export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0-cp35-cp35m-linux_x86_64.whl
pip install --upgrade $TF_BINARY_URL

PyCharmのインストール

ここから、PyCharmをダウンロードします。今回はcommunityエディションを用います。

ダウンロードしたファイルの置かれたディレクトリに行きます。ディレクトリが分からない場合は、Firefoxでは右上の下矢印ボタンをクリックしダウンロード一覧が見れます。ディレクトを見たいファイルの右隣にあるフォルダボタンをクリックすると、該当のファイルが置かれたディレクトリに飛びます。

ディレクトリの中で、今回は「pycharm-community-2016.3.2.tar.gz」ファイルを解凍します。コマンドでもいいですが、今回はファイルを右クリックし「Extract to」を選択し、解凍先を指定しつつ解凍します。解凍先はユーザーのホームディレクトリにしました。

下記コマンドでPyCharmが実行されます。

bash pycharm-community-2016.3.2/bin/pycharm.sh 

Create New Projectで新規プロジェクトを作成してください。
Pycharm_newProject.PNG

次に、Interpreterを指定します。私の環境では、~/anaconda3/envs/tf/bin/pythonを指定しました。どれが指定すべきか分からない場合はとりあえず、デフォルトのまま先に進んでください。プロジェクトが作成されます(時間がかかる場合あり)。
pycharm_interpreter.PNG

Interpreterの選び方ですが、ツールバーのFile->settings->Project:プロジェクト名->Project Interpreterを選択する。
※settingsがpreferenceという場合もあるらしい

asdf.PNG

プルダウンでInterpreterの選択ができます。また、どのようなパッケージが入っているか見れますので、必要なものが入っているものを選んでください。今回はtensorflow、matplotlib、numpyが入っているかどうかで判断しました。

sdf.PNG
※パッケージやバージョンが確認できる

確認

それでは、実際にTensorFlowなどがちゃんと動くかチェックしてみます。
Pythonファイルを作成します。今回はmain.pyとしました。

sa.PNG

以下のPythonコードを打ち込み実行してください(実行はctrl+shift+F10でできます)。こちらを参考にしました(ただし、Python2系で書かれていたので、Python3系に書き直しています)。

main.py
import tensorflow as tf
import multiprocessing as mp

core_num = mp.cpu_count()
config = tf.ConfigProto(
    inter_op_parallelism_threads=core_num,
    intra_op_parallelism_threads=core_num)
sess = tf.Session(config=config)

hello = tf.constant('hello, tensorflow!')
print(sess.run(hello))

a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))

以下のような結果になれば成功です
result.PNG

また、MatplotlibとNumPyについても見てます。コードを上書きしてください。こちらを参考にしました。

main.py
import numpy as np
import matplotlib.pyplot as plt

X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)

plt.plot(X, C)
plt.plot(X, S)

plt.show()

以下のようになれば成功です。
matresult.PNG

以上となります。お疲れさまでした!
繰り返しになりますが、誤ってる点や改善すべき点がありましたらコメントをください。喜びます。
また、リンクをした記事を筆頭に有益な情報を共有してくれる方々に感謝しています。
さいごに、楽しい機械学習ライフを!


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。