素人技術日記

プログラミング初心者が技術ネタ中心で書くブログ。

2017/03/24

Python環境設定続き

少し汚れてしまったOSをもう一度クリーンインストールしても良かったが学校の履修に関してなど何かとやることが多く、ここで環境が安定しなくなったら困るので、GWあたりに綺麗にすることにした。

せっかく綺麗にするならなんのディストリビューションを入れるのかも考えたいし。

現在の環境はxubuntu16.04なんだけど、もう少し面白い(ニッチな)やつ使ってみたいかも。

Ubuntu系統が入れるの簡単で甘えてしまうけど、勉強も兼ねてArchとかかな。

話が逸れたけど、そんなこんなで自分の環境少し汚してもいいかと思いPythonを元の環境に戻した。

matplotlibの描画ができなくて一瞬焦ったけど、すぐにどうにかできた。

ある程度潔癖症をやめれば流石に構築はすぐだった。

下の2つの記事が非常に参考になった。

dragstar.hatenablog.com

qiita.com

ゼロから作るDeep Learning

勝手に魚本と読んでる本。 3日目にしてやっと取り掛かることができた。

今日は3章まで。 多分この本は後から難しくなると思うので今のところは問題ないが若干不安。。

ニューラルネットワークの最も基本的な考え方とpythonの扱い方を覚えたって感じ。

ただバッチ処理に関しては書ける自信がない。

というかNumpyって本当にいろんな使い方があって、Pythonの最もおいしいところなのに全然慣れない。

下の資料のような基本的な書き方についても勉強できてよかった。

azuuun-memorandum.hatenablog.com

qiita.com

また明日時間を見つけて取り掛かる予定。

Splatoon2試射会

4時から試射会に参加予定なので楽しみ。

明日は午前中から用事があるので仮眠してから取り掛かりたい。

WiiUSplatoonも最近はほとんどやってないので腕がなまってる気はするけど、全力で楽しんでくる。

2017/03/23

dockerについて

結局Dockerfileからホストのディレクトリをマウントする方法はなさそうだった。

そこで複数コンテナは建てないがdocker-composeを使うことにして「めでたし、めでたし」としたかったが、GUIの部分で詰まった。

魚の本を勉強していると昨日書いたが、この本ではmatplotlibでグラフを書くのでGUIの環境を整えてあげなくてはならなかった。

調べてみたらDockerでGUIを使えるようにする記事はいくつか発見することはできたが、matplotlibが必要とするPyQt4がどうしても導入できなくて諦めてローカルの環境でやることにした。

PythonバージョンのQtがあることを恥ずかしながら初めて知ったので若干驚いた。(なぜか書籍はあんまり発達してない。みんなC++を普通に使うのかな?)

Python環境構築

今までneovimの超有名プラグインdeniteを使用するために適当にセッティングしたぐらいで、真面目に環境組んだことがなかったので少し調べてみることに。

(そもそもdocker使うのでローカルの環境を気にする必要もないと考えてたし)

調べると

pyenvが必要かどうかフローチャート - Qiita

こんな記事が出てきた。

「pyvenvとか知らないぞ。俺も脳筋でpyenv使ってきてた。」と思いpyvenvを調べた。

あんまりいい資料がなかったが

Python: pyenv, pyvenv, virtualenv – What’s the difference? | Abu Ashraf Masnun

この資料が割と分かりやすかった。

要は、

pyenvはPythonのバージョンマネジャーで、様々なバージョンや実装(CPython以外)をインストールできる。 pyvenvはPython3.4から導入された、他のプロジェクトと干渉しない仮想環境を作るツール。

ということなのだろう。(pyvenvなんて本当にコンテナ使うなら不必要な気もするが)

調べたのでpyenvを捨ててしっかりと環境を構築し直そうと思ったら、deniteが反応してくれなくて困ってる。

情けないことに今日も環境構築に時間を取ってしまい終了。

deniteは今までできていたことを考えると削除する際に失敗して溜まったゴミが悪さをしてる可能性もある。

OSを入れてから半年ぐらい経っているし、新学期も始まるのでここで一つクリーンインストールするのもありかもしれない。

2017/03/22

ブログ開設

今まで何度かブログを書こうと始めてみたけど結局長続きしなかった。

コンテンツが決まってなかったことが原因だと感じたので、技術のことを中心に書くと決めればできるのではないかと思った次第。

モチベーションとしては内容を濃くするよりも続けることに重きを置いてます。

真面目に勉強し始めたという点ではプログラミング歴1年未満のド素人(何行かJS書いたことがあるぐらいで、本当に書いてない人ですw)なので、間違ったこともガシガシ書いてしまいそうだけど多めに見ていただきたいです。

Rubyのしくみ

現在読んでる本。

あらかた読み終えたけど、ブロックとかRubiniusの説明があんまり頭に入ってこなかったので読み直したいと思ってる。

そのあたりが重要そうな雰囲気もあるし。

RubyRailsからプログラミングを始めたので馴染みがある。(というかまともに書けるのRailsぐらい)

言語処理系の本ではMatzの本が新しくて人気だけど、自分は一度挫折している。

コンピュータ・サイエンスの基礎の部分を最近勉強したし、この本も読んだので読めるようになっていると嬉しい。

青木さんのコンパイルの本は少し古いかもしれないけど良い本と書いてあったので、そっちから取り掛かってもいいかもしれない。

docker

魚の本を勉強しようと思っているのですが、anacondaを入れろって書いてあったのでdockerの公式レポジトリにあるanacondaのイメージを引っ張ってきた。

volumeに関しての知識がなくて、ホストのファイルをどうやってコンテナにマウントすればいいのか迷った。

結果としてdocker公式を読みなおしたことで理想通りの挙動は見せてくれたけど、Dockerfileでの書き方がわからずコマンドで解決しているのでどうにかしたい。

現在は

docker run -it -v ~/machine-learning:/var/ml pencilrocketman/anaconda コマンド

こんな感じでmachine-learningディレクトリを/var/mlにマウントしてる。

docker-composeを使えばできそうみたいな雰囲気があったけど、今回の場合複数コンテナ建てないから使うのかっこ悪いし上手にいかなかった。。

ホスト環境の使い慣れたneovimで開発したいので結構重要な問題。

この問題絶対解決法があるはずなので明日以降も探して行きたい。

そして早く本題であるDeep Learningの勉強がしたい。