山正で夜のコース

最初に決定事項を。

次回のmishima.sykは12/10です。部屋を押さえてコンパス用意したらまたきちんと案内をだします。内容はtensorflowとkerasのハンズオンになります。今話題のDeepLearningですよw

というわけで、沼津の山正(ハナレ)で打ち合わせをしました。本店の方は予約が取れなかった

1475664123

カマスの南蛮漬け(だったと思う)

1475664125

左はイカにトロロが和えてあるもので、右はイイッコだそうです。シッタカとは違うらしいが区別つかんなぁ。先月南伊豆の民宿でいただいたイソモノとは違うんだろうなあと思いながら食べていたが、帰って調べていたら同じクボガイだった。

1475664128

お造り。奥から時計回りに、かつお、アジ、カマス、マグロ、イカ。マグロは赤身が正解だと思います。

1475664130

サンマ、美味

1475664132

茶碗蒸し大好き。週末作ろうかなと思った

1475664134

メカブと上に梅、混ぜて食べるとさっぱりしていて口直しによい。

1475664136

天ぷらとかき揚げ。海老は頭が美味しいですね。天ぷら屋も行きたい、静岡の成生とか

1475664141 1475664143

最後はお寿司です。

1475664147 1475664150

コスパは高くておすすめだ。大変満足した。

次回のmishima.sykできたらランチに行けばよいと思うが、ランチは予約できないので、1030くらいから並ばないといけない…

佳肴 季凛さんですっぽんを堪能してきた

先月の連休に親が来ることになり、親も義母もすっぽんを食べたことないそうなので、じゃぁすっぽんでもということで 季凛さんに久しぶりにお邪魔することにしました。

相変わらず美味しい。

1475482688

マグロは大間産だったが一切れは娘に譲ったw 個人的にはマグロも牛肉も赤身のほうが好きですね。

1475482691

すっぽんの生き血はリンゴジュース仕立てになっていたので非常に飲みやすかった。

1475482694

すっぽんの刺し身は初めてだったが美味しい。特に赤身の部分がたまらなかった。

1475482697

お鍋の登場でみなさんのテンションが上がったw

1475482700

後ろ足の唐揚げは、フグの唐揚げのような味わいで美味だった。

1475482703

鍋は美味しかった。

1475482708

メインは雑炊なんだけど、それまで少食の老人のサポートをした結果、雑炊は3,4杯しか入らなかったw

1475482711

デザートは一口食べて娘に譲った(そして雑炊をいただいたw)

1475482713

いつも美味しい料理をありがとうございます。堪能しました。

エリックサウスで南インド料理(カレー)

所用で本社出張だったので、お昼はヤエチカのエリックサウスでビリヤニ!ビリヤニ!とやる気を出して出かけたが、1230の時点で既にビリヤニ売り切れ。残念。

プレートミールスを注文。ノンベジなのでカレーはマトンカレー。サラダではなくヨーグルト(パパドに遮られて見えないが、一番右にヨーグルトがある)

1475481558

ラッサムもサンバルも美味い。ラーメンストリートよりもこっちだなと。東京でランチだったらエリックサウスでだなと思った。ラーメン行くならトナリでタンメンかな。

さて、帰ってきてから改めてラッサムとかサンバルとか調べると、ラッサムはライスにかけるとかお作法としてラッサムよりもサンバルが先とか色々書いてあって学んだ。

あと、やたらアツいブログも発見したw

で、今回ラッサムはスープとしていただいたのだけど、あれをライスにかけるのかと… そもそもなんでラッサムをスープとして認識していたのかというと、カーンケバブビリヤニで前菜のスープ的な位置づけで出されたからなんだよね。

というわけで、ビリヤニとラッサムが一緒に出された場合にはビリヤニにラッサムをかけるのかなぁ?と疑問におもったのだ。誰か教えて。

尚、この本は持っておくべき

京都で研究室出身者の講演会

土曜日は研究室出身者の集いみたいなのがあって参加してきた。下っ端なので気疲れはするけど楽しいし非常に勉強になった。皆さん活躍されているようで、スゲーって言うような仕事をしている方が何人もいて話していて刺激を受けた。僕も頑張らないとなーと思った。

Kさんのディープラーニング系の話で「ニューラルネットワークは結局脳の模倣だから、脳の理解つまり人間のシミュレーションの方向に進んでるとも言える。だから精度の良し悪しだけじゃなくそういった点も踏み込んでいくべき」みたいなことをおっしゃっていて、なるほどと思った。

機械学習ばかりやっている身だと精度のほうに気持ちが行っちゃうけど、もっと本質を追いかける必要はあるよなぁと改めて感じた。そして画像認識なんかは確かに人間の視覚情報処理の模倣とシステムの理解ということになるんだけど、僕が取り組んでいる創薬系でのDLは分子認識というタンパク質が低分子化合物を認識するというシステムの理解だからやっぱり、CNNとはまた違ったアーキテクチャを考え出すのと同時に、入力をどうするか(化合物の正しい入力表現)を考え出す必要はあるよなぁと感じたわけです。

あとは相変わらずN先生は頭良すぎて、さっぱり理解できんかったが、曰く「MO法は行き過ぎた理論」は名言だと思った。あんなに遠くまでデローカライズするようなMOというモデルは化学に沿っていないみたいなことを言っていて、ほうほうと思いながら聞いていた。隣の先輩に「僕もFMOを製薬業界に根付かせたいんですよねー」みたいなことをぼそっと言ったら「お前、そんな危険なチャレンジするのか!怒られるかもよ!!!」と返されたw N先生、何故かFMO大嫌いなんだよねー。FMOなんてMOがデローカライズそんなにしないからっていう経験則で分子を細切れにする方法論だから、「MO法は行き過ぎた理論」っていう考え方を取り入れて実務的に上手くやっている方法だと思うんだけどなぁ。今度どこが問題なのか聞いてみたい。

行きの新幹線の中で読んだ瀬尾まいこ

1475480217

お昼は、高倉二条で蕎麦っぽいラーメンを食べてきた。酸味強め。つけ麺のほうが正解だったのか? わからん。

1475480219 1475480221

同窓会の懇親会。色々出てきて軽食をイメージしてたから面食らった。量も多くて途中でギブしたw

1475480224 1475480226

尚、楽友会館は学生時代住んでいたとこの近所だったので、懐かしさ倍増w

1475480228

帰りに三条をぶらっと歩いてたら立ち飲みっぽいところがあったので入った。

1475480233

ねぎ焼きってほんとにネギしか入ってなくてつまみにちょうどいい。生ビールも自分で入れる方式で外人の旅行者には受けるらしい。二階が民泊になっているらしく外人率が高かったが、フレンドリーな雰囲気の店で楽しかった。

それから、店員さんが高速バスの運転手もやっているらしく、御殿場の方まで行くことがあったらしく。地元ネタとかバスネタが聞けて楽しかった。

1475480231

二日目は京都産ポケモンが少し欲しくて(今のバージョンはどこで取ったかが記録されるので、京都産10Kたまごが欲しかったw)祇園に鯖寿司を調達しに行くついでにイワークの巣となっているらしい丸山公園で一狩りしてきた。

が、暑すぎてとっとと退散w ハガネールに進化できるようになってから改めてイワーク狩りすればいいやw

疲れたので、おかるであんかけうどん。

とろみが葛かな? うまい、最高。

1475480235 1475480238

なんとなくよさげなラベルの日本酒を抱えて帰宅。

1475480240

楽しかったのもあるけど、やはりすごく勉強になったなぁと思う。

ポケモンGO(Lv29)

前回から15日かかった。大体20000XP/dayくらいのパフォーマンスなので次のレベルアップは3週間後くらいかな。

1475235621

図鑑は130なので、あと12か

  • リザードン
  • エビワラー
  • サワムラー
  • マタドガス
  • オムスター
  • カイリキー
  • ゴローニャ
  • フーディーン
  • プテラ
  • ジュゴン
  • ベトベトン
  • カブトプス

カイリキー、ゴローニャ、フーディーンは飴集めないといけないから面倒くさい。富士総合運動場にパウワウ出てるらしいから行ってみたけどポツポツだしこっちも面倒くさいw

PyConJP2016に行ってきた

まず予習しておいた戸山公園にはピカチュウはいなかった。東側も行ってみたけどブーバーくらいしかいなかったし、高低差があるので歩くのがめんどくさかった。西側はオニスズメばかりw

PyConJPは去年は不参加だったので二年ぶりの参加でした。初中級向けの演題が多かった気がして、間口が広げたかったのかなぁと思ったが一方でディープな話題が少なくて初期の頃とは色々変わっているんだなぁと感じた。これは選考プロセスのせいもあるのかな?

あとディープラーニング関連の演題が多かった。一昨年は機械学習の話題も多かった気がするけど。僕の最近の興味もディープラーニングなので、Pythonというよりはディープラーニングの演題を聴きに行った(というかほとんどそれしか聴いてないw)

尚、狙った演題を椅子に座って聞くためには一つ前の演題をスキップしないとしんどいことになるのでなかなか厳しかった。もう少し自由に出入りできると良いのかなと思うが、大学では仕方ないかな(逆にカジュアルに出入りできる教室の設計だと困るw)

深層学習の次の一手

次の一手ということで、なんとなくディープな話が聞けるのかなと思ったけど、クラウドサービスの話が多かった印象。 自社サービスの宣伝するならもっとグイグイやってくれたほうがよかったかな。

GPUを使える仮想環境のニーズって個人レベルだとかなりあると思うんだよね。気軽に試したいし。

尚、CNTKはちょっと興味を持った。

ニューラルネットワークのフレームワークであるChainerで始める対話Botの作成

自然言語処理系のDLはあまり追いかけてなくて、 word2vecくらいしか理解してないんだけど、あれはディープじゃないから。RNNとかLSTMをつかってやろうとしたことの話で、具体的なコードが出てこなかったけど、やろうとしていることは理解できて面白かった。

LSTMと化合物のフラグメントってどう対応とったらうまいくのかなぁとか思った。ゲノムのほうがやりやすい気はするけどそういう論文は見たことないなぁ。

確率的ニューラルネットの学習と Chainer による実装

とても勉強になった。ツイートでメモとってたので、帰りの新幹線で読み返してた。

画像生成と化合物合成って結構似ていると思っているので、こういう方法で化合物生成するのって悪くはないんじゃないかなぁーと。

そのうち試す。

Pythonでpyftpdlibを使ってFTPサーバーを作る際に使ったテクニックの紹介

要件定義と言うか仕様を固めるの難しいよなぁと思いながら聞いていた。パッケージを作りたいヒトは聞いておいて良い内容だったと思います。僕も、あのときああいう風にすればよかったのかとか思いながら聞いていた。

Deep Learning with Python & TensorFlow

tensorflowの触りだけだった。初めてのヒト向けに具体的な事例を紹介する内容だったと思う。知らない人向けには面白かったと思うが、ある程度使っているヒトにとってはちょっと物足りなかったかも。

二年ぶりの参加だったけど、色々と刺激を受けて楽しかった二日間だった。来年も参加します。

初ヒリゾ

二泊三日で南伊豆に行ってきた。まぁほとんどヒリゾが目的だったけど。

伊豆縦貫道をフルに活用して4時間弱くらいだったので日帰りは無理だけど泊まりの2回は行けそうな感じ(帰宅後の疲労感は半端ないと思うがw)

初日は晴れ間も見えて楽しめたが、お昼を過ぎてから急激にうねりがはいってきて体力が削られる感が強かった。尚、ウエットは不要の水温25.8度だった。

1474371210 1474371213

ウツボと何か

1474371216 1474371218

何かとカゴカキダイ

1474371221 1474371223

サヨリと海藻に群がる魚

1474371225 1474371228

悠然と泳ぐボラとナマコ

1474371230 1474371233

知らん魚二種

1474371235 1474371238

綺麗な岩と帰りのショット

1474371240 1474371243

帰りにあいあい岬から。それから道端にカニが歩いていたのでプロディジーのアルバムっぽく撮ってみようとしたけど持ち方が悪くて裏プロディジーみたいになってしまったw

1474371245 1474371248

夕飯は南京亭に久しぶりに行った。その後弓ヶ浜で。折りたたみ自転車を持っていったので孵化作業が捗ったw

1474371250 1474371252

二日目も早朝に起きて孵化作業。ついでに花の写真も

1474371255 1474371257

朝からヒリゾに行ったけど、うねりがひどいので早めに退散。下田の石塚で蕎麦。しかも寒くて暖かいかけを注文。 美味しかったので良し

1474371259 1474371261

夜も元気に孵化作業。弓ヶ浜と満月

1474371264

次の日から伊勢海老漁が始まったそうで、朝から騒がしかった。風呂から眺めていたけど覗きにいけばよかったかなと後悔。

1474371266

漁が終わったタイミングで孵化作業を開始したので、適当な海の写真になってしまった。もっと伊勢海老ワッシャーみたいな写真を撮るべきだったw

1474371268

用があったので、早々にチェックアウトしてあいあい岬からヒリゾを撮ったのだけど既にヒトいっぱい。しかも9時前にアイアイの駐車場が8割がた埋まっていて、そこから水着で降りていく集団が多くいたので???となったのだけど、中木の入り口を通過して謎が判明した。

1474371271

中木の駐車場が満車になったので、アイアイ岬に駐車して、最寄りのバス停(結構離れてる)からバスで中木に向かう集団だったらしい。

土日のヒリゾの闇を見たw 来年行けても平日に行こうっとw

ポケモンGO(Lv28)

昨晩レベルアップしたので前回からは9日か。図鑑は124まで埋めた。

レベルアップ間際にカイリューに進化させることができたので、今後はこいつに星の砂を注ぎ込む予定。

1473974128

富士 田子の浦みなと公園

ゴースがよく出るので、ゲンガーに進化させるために何度か通った。公園内の道路が整備されているのと、ポケモンの出現ポイントがわかりやすいので自転車で定速走行してぐるぐるまわるのが吉。港側のコイキングが出る場所にたまにミニリュウも出現するので欠かさずまわろう。

ゲンガー必要ないなら行く必要はない。

駐車場に色々な垣根が作られているので見ておくとよい。

1473974002 1473974009

清水 三保の松原

松原の中でルアー挿してじっとしているのが性に合わないので、自転車持っていってみたけどどこを走ったら調子いいのかわからなかったのと、車の交通量が多いので結構気を使いそう。帰りの車でゴーリキーなんかが近くにいる感じだったのでちゃんと探索すればそれなりに面白いのかもしれない。

尚、ドリームプラザの交差点でCP429のラッキーに遭遇したのだけど、ズリのみハイパーボールグレートからのドロンをかまされ凹んだ

海辺でゼニガメ

1473974028

帰りに河岸の市のみやもとで本マグロ丼を食べてきた。

1473974075

沼津 千本浜

前回は電車で行ってビール飲んできたのだが、今回は機動力を確保するために自転車持って出かけてきた。お香を炊きながら堤防往復してもいいし、あちこち自転車でまわっても楽しい。ワンリキーとイシツブテがちょくちょく出るので、こいつらを進化させるために何度か通ってもいいかなぁと思った。休日は駐車場の確保が課題かなぁ。

ポケモン狩るのに飽きたので、伊豆屋で天丼食べてきた。並ばず入れてラッキー

1473974104 1473974125

富士の日本酒バー「音連れ」で昼酒してきた

富士に日本酒バーがオープンしたのは知っていたのだけど、なかなか行く機会がなかった。

月に一度早い時間に店を開けるようなので、その日に合わせて昼酒することにした。バスで富士駅まで行って昼酒してからポケモン狩りながら徒歩で帰るというプラン。

1473927001

半合500円、一合???円(忘れた。でも1000円ではなかったと思う)というわかりやすい価格体系。

淡墨長寿桜

1473927019

お通し

1473927034

珍味さん酒盛り合わせ(ふぐ子、くさやチーズ、イカワタ)

1473927050

エターナル(ってどこの酒だっけ?w)

1473927067

お通しが出るので、気になったお酒を一合飲んでさっと帰るのがいいのかなと。あと瓶を見せてくれると嬉しい(言えば見せてくれるんだろうけど)

尚、内装の雰囲気がなんか既視感あるなーと思って帰ってから調べてみたら、あのカフェの方だったのか、納得した。

DNN Regressionの自分の実装がダメな件

TensorflowのDNN Regressionを使っていて便利なんだけどハイレベルなAPIばっかり使っていると自分でもっと別なの実装したくなった時に困るだろうなぁと、自分で実装してみたら…

$python boston.py
 RF: R2: 0.736624, RMSE:4.631010
SVM: R2: 0.515467, RMSE:6.281300
TFL: R2: 0.647992, RMSE:5.353827
 MY R2: -1.007581, RMSE:12.785702

精度悪すぎ… sofでも同じような質問を見つけたが同業だろう…w

ログを取ってみたところ、どうも収束が悪いっぽい。

import numpy as np
import tensorflow as tf
from sklearn import cross_validation
from sklearn import datasets
from sklearn.svm import SVR
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
from sklearn.metrics import r2_score
from math import sqrt
import random

tf.logging.set_verbosity(tf.logging.ERROR)

def test_svm(x_train, x_test, y_train, y_test):
    clf = SVR(kernel='linear').fit(x_train, y_train)
    y_pred = clf.predict(x_test)
    r2 = r2_score(y_test, y_pred)
    rmse = sqrt(mean_squared_error(y_test, y_pred))
    print('SVM: R2: {0:f}, RMSE:{1:f}'.format(r2, rmse))

def test_rf(x_train, x_test, y_train, y_test):
    rlf = RandomForestRegressor().fit(x_train, y_train)
    y_pred = rlf.predict(x_test)
    r2 = r2_score(y_test, y_pred)
    rmse = sqrt(mean_squared_error(y_test, y_pred))
    print(' RF: R2: {0:f}, RMSE:{1:f}'.format(r2, rmse))

def test_tf_learn_dnn(x_train, x_test, y_train, y_test, steps=10000, hidden=[20, 20]):
    feature_columns = [tf.contrib.layers.real_valued_column("", dimension=13)]
    tfl = tf.contrib.learn.DNNRegressor(hidden_units=hidden, feature_columns=feature_columns)
    tfl.fit(x=x_train, y=y_train, steps=steps)
    y_pred = tfl.predict(x_test)
    r2 = r2_score(y_test, y_pred)
    rmse = sqrt(mean_squared_error(y_test, y_pred))
    print('TFL: R2: {0:f}, RMSE:{1:f}'.format(r2, rmse))

def inference(x):
    hidden1 = 20
    hidden2 = 20

    with tf.name_scope("l1") as scope:
        w1 = tf.Variable(tf.truncated_normal([13, hidden1]), name="w1")
        b1 = tf.Variable(tf.zeros([hidden1]), name="b1")
        h1 = tf.nn.relu(tf.matmul(x, w1) + b1)
        #h1 = tf.nn.dropout(h1, 0.9)

    with tf.name_scope("l2") as scope:
        w2 = tf.Variable(tf.truncated_normal([hidden1, hidden2]), name="w1")
        b2 = tf.Variable(tf.zeros([hidden2]), name="b2")
        h2 = tf.nn.relu(tf.matmul(h1, w2) + b2)
        #h2 = tf.nn.dropout(h2, 0.9)

    with tf.name_scope("l3") as scope:
        w3 = tf.Variable(tf.truncated_normal([hidden2, 1]), name="w2")
        b3 = tf.Variable(tf.zeros([1]), name="b3")
        y = tf.matmul(h2, w3) + b3
    return y

def loss(model, y_):
    return tf.reduce_mean(tf.square(tf.sub(model, y_)))

def training(loss, rate):
    return tf.train.AdagradOptimizer(rate).minimize(loss)

def test_my_dnn(x_train, x_test, y_train, y_test, batch_size=32, epoch=10000, shuffle=True):
    max_size = x_train.shape[0]
    n = max_size - batch_size
    idx = list(range(x_train.shape[0]))
    x = tf.placeholder(tf.float32, shape=[None, 13])
    y_ = tf.placeholder(tf.float32, shape=[None])

    model = inference(x)
    loss_value = loss(model, y_)
    train_op = training(loss_value, 0.1)

    init = tf.initialize_all_variables()
    sess = tf.Session()
    sess.run(init)

    for e in range(epoch):
        if shuffle:
            random.shuffle(idx)
            x_train = x_train[idx]
            y_train = y_train[idx]
        for i in range(n / batch_size):
            batch = batch_size * i
            x_train_b = x_train[batch:batch + batch_size]
            y_train_b = y_train[batch:batch + batch_size]
            _, l = sess.run([train_op, loss_value], feed_dict={x: x_train_b, y_: y_train_b})
        #if e % 100 == 0:
        #    print e, l

    y_pred = sess.run(model, feed_dict={x: x_test})
    y_pred = y_pred.T[0]
    r2 = r2_score(y_test, y_pred)
    rmse = sqrt(mean_squared_error(y_test, y_pred))
    print(' MY R2: {0:f}, RMSE:{1:f}'.format(r2, rmse))

if __name__ == "__main__":
    boston = datasets.load_boston()
    x_train, x_test, y_train, y_test = cross_validation.train_test_split(
        boston.data, boston.target, test_size=0.2, random_state=0)

    test_rf(x_train, x_test, y_train, y_test)
    test_svm(x_train, x_test, y_train, y_test)
    test_tf_learn_dnn(x_train, x_test, y_train, y_test)
    test_my_dnn(x_train, x_test, y_train, y_test, shuffle=True, epoch=30000)

というわけでソースコードを読んでみたんだけど、わかりにくかったので途中までしか追えてなく、結局原因がつかめていない状態。

以下メモ

  • 実際に使われているクラスはDNNLinearCombinedRegressorで、名前の由来がわからなかったけど、TensorFlow Wide & Deep Learning Tutorialを読めばわかる

  • fitで訓練するんだけど、_get_input_fnで入力、出力のplaceholderを返すinput_fnとバッチ用のデータセットを返すfeed_fnという関数が返される。

  • バッチは_get_input_fnでランダムシャッフルされているし、デフォルトのサイズは32

  • デフォルトのoptimizerはAdaGrad

  • clip-gradientsというオプションがあるのだがどこで使われているのかわからなかった