k8s触り始めた、というかHelm

(アウトプットする言うてぜんぜん書けてない)

KubernetesはDocker for Macに標準で入ってた。というか設定GUIからチェックをつければ入る minikubeももともと入れてたのでどうなるのかと思ったら

$ kubectl config get-contexts
CURRENT   NAME                 CLUSTER          AUTHINFO         NAMESPACE
          docker-desktop       docker-desktop   docker-desktop   
         docker-for-desktop   docker-desktop   docker-desktop   
*          minikube             minikube         minikube  

から一覧がみれて

 $ kubectl config use-context docker-for-desktop

で切り替えることができるらしい

$kubectl config get-contexts
CURRENT   NAME                 CLUSTER          AUTHINFO         NAMESPACE
          docker-desktop       docker-desktop   docker-desktop   
*         docker-for-desktop   docker-desktop   docker-desktop   
          minikube             minikube         minikube   

なんか2つあるが...

helmはkubernatesをいい感じにするやつっぽい どっちにしろyaml地獄なんですが...

Scality/Zenkoをデプロイしようとしても

$ helm install --generate-name -f single-node-values.yaml zenko
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: ValidationError(ConfigMap.metadata): unknown field "role" in io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta

なのはなぜ...(足りない経験値)

zenko.readthedocs.io

GensimのDoc2VecでQiitaのタグを可視化 <実践編>

(<理論編>はありません) 

 

  Qiitaの記事にはタグがついていて、読者は記事についたタグを見て「何についての記事か」を把握することができるようになってます。書き手は必ず1つ以上タグをつけなければいけないようです。要はタグは記事の内容の特徴を表すものなので、これを利用してDoc2Vecでタグ間の関係性を可視化してみます。おおまかな流れは

  1.   Qiita APIを使って記事を取得
  2.   前処理を行う
  3.   GensimDoc2Vecで学習させてmodelを作成
  4.   t-SNEを使って次元圧縮して2次元に

です。雑に書き散らかしたソースは https://github.com/SyureNyanko/Doc2Vec_From_Qiita 

 

 Qiita APIは「1時間に1000回」の制限があるので、4秒のSleepを入れました。取得するデータ自体が大きくなる&稼働時間がながくなるのでAWSを利用し、EC2上でスクリプトを動作させて、データはS3へと格納するようにしました。記事数の多い上位282タグを利用しました。

 取得されるデータはJSONの配列で、rendered_bodybodyなどがあります。rendered_bodyを利用し、lxml.html.document_fromstringで文字列にしてからMecabで分ち書きにしました。最初はJUMAN++を利用していましたが、長い文字列を入れると(?)遅くなるよう(?)で今回は見送りました。後日、検証したいと思います。

 Doc2Vecでの学習はMBP(Mid 2015)で6時間ぐらいかかりました。

   できたモデルをt-SNEで2次元まで次元圧縮しました。

f:id:SyureNyan:20190506105140j:plain

(重なってわかりづらい...)

わかることを挙げるとキリがありません。楽しいですね。それでは。

(今年はいろいろ勉強してアウトプットしていこうと思います。)

 

参考にしたサイト/コード:

Qiita公式 https://qiita.com/api/v2/docs 

Gensim https://radimrehurek.com/gensim/ 

DeepAge : Doc2Vecの仕組みとgensimを使った文書類似度算出チュートリアル

https://deepage.net/machine_learning/2017/01/08/doc2vec.html 

Jacopo Farina's blog  https://jacopofarina.eu/posts/gensim-generator-is-not-iterator/

ARBELT OFFICIAL BLOG https://blog.albert2005.co.jp/2015/12/02/tsne/

Target Visualization - T-SNE and Doc2Vec https://www.kaggle.com/arthurtok/target-visualization-t-sne-and-doc2vec/data (重いので表示されるのに時間がかかります)

 

 

 

 

 

 

 

chainerでCNN組んでラーメン画像分類 (やってみた)

動機

 どこかのphp入門書の帯にラーメンの種類(味噌ラーメンとか塩ラーメンとか)を機械学習で(?)見分けるという売り文句書いていたので、それにインスパイアされ、初心者にはうってつけの題材だと思ったので、chainerのCNN(Convolutional Neural Network)手習いとしてやってみました。

とりあえず読んだ本は

深層学習 (機械学習プロフェッショナルシリーズ)

深層学習 (機械学習プロフェッショナルシリーズ)

要件

 画像から何ラーメンか見分けたい。以下のようにフォルダごとに分けた学習用画像がある。
f:id:SyureNyan:20171107001933p:plain
中身は各種類の画像(写真はつけ麺フォルダ)
f:id:SyureNyan:20171107002116p:plain

 種類は家系ラーメン、二郎系ラーメン、味噌ラーメン、塩ラーメン、とんこつラーメン、つけ麺の7種類である。これらでCNNのモデルに学習させて分類器を生成する。

環境

 MacBook Pro f:id:SyureNyan:20171107002842p:plain
Python 2.7.10
chainer 3.0.0

実装

datasetを作るやりかた。

 非常に役に立ちました。
qiita.com

モデル

5層のネットワークです。畳み込みのパラメータは適当
1と2、2と3の間が畳み込みで繋がれて3と4, 4と5の間が全結合です。
特に根拠はありませんが、これのmnistの例を参考にしてみました。

Chainer v2による実践深層学習

Chainer v2による実践深層学習

f:id:SyureNyan:20171108231235p:plain

学習結果

validation/main/accuracyがmain/accuracyと乖離し、6割止まりであるため、
過学習していると思われます。
f:id:SyureNyan:20171108231315p:plainf:id:SyureNyan:20171108231317p:plain


モデル、パラメータ、学習データをチューニングする必要がありそうです。
一応ソースも貼っておきます。
github.com


次回、いろいろ真面目に?チューニングがしたいの巻です。たぶん。