08/14(月)、フードコードで勉強しました。
『TensorFlowで学ぶディープラーニング入門』
- 3時間: 13:00-16:00
- 26ページ(55-80P)
- 1.3.3-2.1.2章
学んだこと
最尤推定法:与えられたデータを正しく予測する確率を最大化する
tensorflow.initialize_all_variables
は2017/03/02以降に廃止された。替わりにglobal_variables_initializer
を使うこと。
Python
enumurator: カウンタと要素の両方が取得できる。便利! https://docs.python.jp/3/library/functions.html#enumerate
numpy.multivariatenormal: 多次元正規乱数を生成する。 https://lucidfrontier45.wordpress.com/2011/07/23/multivariate_gauss/
numpy.eye: 単位行列を生成。
numpy.random.permutation: 配列をランダムに並び替える。 https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.permutation.html
pandasライブラリ:データ解析用ライブラリ
pandas.DataFrame.as_matrix: numpyの配列に変換する
numpy.ndarray.T
:transpose
メソッド同じ。転置する。数学表記であるのが良いですね。numpy.linspace
:start~stop区間をnum等分したデータを生成するリスト内包表記: 便利だけど、ちょっと見づらかった。慣れの問題?
[x**2 for x in range(0,5)] #⇒ [0,1,4,9,16]
ブロードキャストルール:「多次元リストに1要素を足すと、すべての要素に同じ値が足される」などのルール。
分散共分散行列;XとYの相関が分かる?
http://postd.cc/a-beginners-guide-to-eigenvectors-pca-covariance-and-entropy/#covariance
質問
Windowsで数式から簡単にグラフを作成できるツールは??? MacならGrapher使うんだけどなー
- GNU Plot?
- Grapses?
- Wolfram Alpha ?
numpy.linspace
の[linspace]は何の略?
⇒ 同僚から教えてもらった。Linear Space(線形空間)っぽい。名前と機能が合っていないが。numpy.eye
: なぜ「eye」という名前?
⇒同僚から教えてもらった。単位行列を生成するidentify
関数と音を合わせたのかもしれない。 あと、numpyはMatlabユーザのことを考えていて、matlabだとeye
を使うらしい。 http://mathesaurus.sourceforge.net/matlab-numpy.html
感想
- 『TensorFlowで学ぶディープラーニング入門』は数式に対する説明は丁寧だが、ソースに対する説明は不十分。 numpyのライブラリを知っていること前提のように思う。 2.1章 P71の以下のコードが全然分からなかった。
n0, mu0, variance0 = 20, [10, 11], 20 data0 = multivariate_normal(mu0, np.eye(2)*variance0 ,n0) df0 = DataFrame(data0, columns=['x1','x2']) df0['t'] = 0
説明は「t=0(非感染)にのデータを乱数で発生する」のみ。 このコードの説明はなくてもTensorflowは理解できるけど、自分は「20を平均値にして~」ぐらいの説明が欲しかった。
TensorFlowのplaceholder機能はすばらしいと思う。処理とデータが分かれて、コードの可読性があがりそう。
共分散行列を調べるために、6年以上振りに「線形代数」の教科書を開いた。懐かしい。私はあの頃と比べて成長しているのかな?