White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

【読了】エンジニアの知的生産術

 

 一回読み終えた。

軽い感想としては"土台となる部分は提供するから、あとは自分で考えてね"って感じか。印象に残った部分としては調査(種まき)・抽象化、パターン化(発芽)・検証(促進)のサイクルとか、タスクを達成可能なレベルまでに落とす、GTD(まず頭の中にあるもの全部書きだして、そこから優先度をつける)、KJ法、あたりか。()内間違ってるかも。参考文献の紹介の仕方は丁寧。

ただ今の自分にすぐ適応できるかっていうと、そこまでの気力は・・って感じ。

一般的な自己啓発っぽさは無いんで読んで損は無いと思う。

 

少し(が数時間後か数日後か不明だけど)後になったらまた読み返してみる。

 

「エンジニアの知的生産術」を買った(2)

 昨日買った「エンジニアの知的生産術」を6章途中まで読んだので、軽く感想+メモ。

 まず4章では読むことに焦点を当てている。情報をみつけることと理解を組み立てることについて述べている。速く読むことと遅く読む場合の違いについても述べている。くり返し読むことと出力することは必要。自分は読んで気になった部分をメモしているが、この方法は役に立たないようだ。残念。

次に5章。これはそのままの引用になるけど、”考えがまとまらないという悩みを解決するために、まず書き出して十分な情報があるかを確認し、それから書き出したものを机の上で物理的にまとめていく方法を学びました”とある。具体的にはまず付箋に何でもいいから書いていってあとでKJ法でまとめ上げていく感じか。うちだとふせんを並べるのは場所的につらそう。モニタも24インチと小さいし・・まずはMac上で動くふせんアプリを探したほうがいいかな?

そして6章(途中)。アイデアの思いつくために有用な方法について、4つの方法が示されている。さらに情報収集の方法として言語化されていないものを言語化されたものに変換することを提案している。(次に磨き上げる方法について述べているがそれはまた後日)

 

今回読む時間を25分程度に区切り集中し、読んだページ数/時間で計測してみた。大体0.4ページ~0.7ページ/minでかなり遅いと思われる。しかもこれで余り頭に入ってないから残念な感じだ。夜間はTwitterのTLが画面横に並んでいてたまに目につくのが遅れる要因になるのだけど、それらがない昼間でも0.5ページ/min程度なので。1ページ3分の音読よりは少し早いか。

 

あとこの本に限ったことじゃないけど、"モデル"って単語の意味がわからなくなってきた・・誰か説明頼む。プラモデルもモデルだし、データサイエンスの分野でもモデリングって言葉もあるし。

 

以降メモ。

4章
本を読むことの目的。娯楽、情報を見つけること。理解を組み立てること
"本から得た材料と自分の経験などを組み合わせて構造化していく「理解を組み立てる」イメージのことを忘れてはいけない"
"読んでいない本について堂々と語る" 歴史の文脈で位置づけを知る。人から聞く。ざっと読む。
"4回読んでいます"
"「準備の大事さ」「段階的詳細化」「繰り返し読むこと」"
"「調査」では、表紙や裏表紙、目次などから情報収集をします。「キーワード探し」は、本を20ページごとに開いて、目に付いたキーワードをメモします。"
"質問を作る" "再度5〜15分程度、本を読みます" "文章を大きな塊ごとにざっと見て、必要そうだと思ったところを2〜3文だけつまみ食いする読み方です。""質問を作ることに集中します。"
"マインドマップを作る"
"読んだ本のページ数、かかった時間、主観的な理解度を記録す
ることで自分の理解力を把握し、得たい理解度に合わせて入力の速度をコ
トロールする"
"適切なバランスがわからなければ速い側に倒すとよいでしょう"
"見出しへの注目"
"書籍のタイトルやサブタイトルは、私は信用していません"
"図は注目に値します。"
"箇条書きも注目に値する"
"、「読みたいときに」「読みたいところから読む」の原則をしっかり守れ"

"本3冊に目を通す」と設定するなら、努力によって達成可能になります"
"時間を区切ってふせんに抜き書きを作る"
"一番のお勧めは復習のための教材を作ることを目的とすること"
"間隔を開けてくり返し読むことが重要"

 

5章 考えをまとめるには
"まずは5分間、レポートで言及するとよさそうな情報を思い付く限り書き出してみましょう"
"関係ありそうな情報を全部書き出します"
"質を求めてはいけない"
"100枚書く"
"多すぎる情報をどうまとめるか""並べて一覧性を高くする""関係のありそうなものを近くに移動"
"KJ法"
"グループ編成は主観的なものなのです"
分類はしない。

「エンジニアの知的生産術」を買った

昨日電子版を買って、3章まで読んだ。

1章では情報収集・モデル化・検証の学びのサイクルについて書かれていて、2章ではやる気が出ない状態をどうやって解決するかについて書かれている。また3章では脳の記憶について書かれていて、さらに繰り返すことが必要、繰り返すのもテストを行ったほうがよいと書かれている。

 

ちょっと最近の自分は乱雑に情報を眺めることとが多く、具体的な成果も上げられていない(ちょこっとatcoderをやってたりはするが)ので、この本を読んでなんか足しにできるようにする。現状検証やアウトプットが足りていないと思う(ので、こうやってブログに書くことでアウトプットしている)

 

本の内容としては別に"エンジニアの"とつけなくてもいい感じはあるが、いきなりPythonの話が出てきたりするのでエンジニア向きではあると思う。あと3章でいきなり脳の構造に行くのは話が飛びすぎ、とも思った。ただ自分が現状抱えているもやもや感を解消する助けにはなりそうだと思っている。

 

以下読んだときのメモ。

Ubuntu Server 18.04に上げたらvagrant upでエラーが出た

(この記事は以前Qiitaに掲載していたものの転載になります。)

Ubuntu Serverを16.04から18.04に上げたらvagrant upでエラーが出たのでメモ。

バージョン

~/hogehoge$ vagrant up No usable default provider could be found for your system. (以下略)

対策

hashicorpにあるvagrant 2.1.2を入れたら動いた。

~$ wget https://releases.hashicorp.com/vagrant/2.1.2/vagrant_2.1.2_x86_64.deb ~$ sudo dpkg -i vagrant_2.1.2_x86_64.deb ~$ cd hogehoge ~/hogehoge$ vagrant up

検索しても18.04でエラーに遭遇した人はいなさそうだけど、Ubuntuを新規インストールしたらエラーに遭遇しないのだろうか?

AtCoder Beginner Contest 106(ABC106)に参加しました

CD駄目です。ってCは発想は合ってたのにWAなのは何故?

A: 道を端っこに寄せればOK。(A-1)*(B-1)が答え。

abc106_a.py

B: ちょっと悩んだ。けど愚直に約数を求めてった。

gist43ad696ab18dcb8d304d71c88e7bbfe8

C: 1以外の数字が来たらそれが答えってのはわかったのに通らぬ。。

gista8d5c415c5c6ede65a7b4b9fcc520d38

TensorFlowのseq2seqでTwitter botの返答を増やそうとしたが上手くいかなかった

(この記事は以前Qiitaに掲載してみたものの転載です。内容がだいぶ古いので、手順が変わっている事も多々あるかと思います。)

先人に習って https://twitter.com/ha_ma の返答の種類を増やそうとしたが、上手くいかなかったので途中経過をメモとして残しておきます。

参考

TensorFlowのseq2seqでチャットボットが作りたい https://qiita.com/Pu-of-Parari/items/62d7226814a6aba98354

実行環境

DockerのJupyter-notebook( https://github.com/jupyter/docker-stacks )で実行してます。

TensorFlowは0.12が使われているので、conda install tensorflow==0.12.1とか入れてインストールしました。

GPUはこの環境では動きません。

実行内容

先述のページにある内容をほぼそのままコピペしてjupyter notebook上で動かしました。in_vocab_sizeとout_vocab_sizeを100000に増やしました。

data_utilsが足りないので、https://github.com/sanshirookazaki/chat/blob/master/data_utils.py をダウンロードしてjupyter notebookの実行ディレクトリにアップロードしました。また、./datas/vocab_{in|out}.txtを事前に作っておく必要があります(jupyterのコンソールでtouch ./datas/vocab_in.txtとか) 。

データはha_maのTimelineに流れたTweetのうちReplyのあるもの9万件です。8万件を訓練データ、約1万件をテストデータに分割しました。

実行結果

単独で実行させた結果、

> こんにちわ

yes

> ただいま

おかえり

> 起きねば

いいなー

> ITジャーナリスト

ん?

> 帰宅

おかえりなさーい

の様に上手く言ったのですが、後述の途中成果物で通常のTweetを入力としたところ、

安楽安楽純血純血純血純血純血純血純血純血純血純血純血純血純血純血純血純血純血純血安楽安楽安楽安楽安楽

とか

尽く禿禿禿禿爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡爆睡

とか残念な結果になりました。

途中成果物

別途MySQLが必要だったりしてそのままでは動かないと思います。 https://github.com/showyou/hama_seq2seq

Google Colaboratoryでの実行

jupyter notebook上でも動くような代物なのでGoogle Colaboratoryでも動きます。

!pip install tensorflow==0.12.1

と入力して実行すればtensorflowの0.12が動きます。

ファイルのアップロード/ダウンロードは以下のページが参考になります。

【Tips】Google Colaboratory でPythonのファイル入出力演習 https://qiita.com/GandT/items/bd80fad2b8258ed87956

一つハマった点としては、upload関数は時間制限があるので、一定時間後にファイルを選択した場合アップロードされず、再度upload関数を実行しなければなりません。またColaboratory環境は一定時間が経つとノートブック以外全部消されるので途中で結果ファイルをダウンロードしなければなりません。

余談

GPUを使いたい場合、nvidia-dockerからjupyter notebookの環境を作るしかありません。

Nvidia-dockerでGPUコンテナの作成 https://qiita.com/uni-3/items/f5911aaaa538b33f370f

幸い、そのへんをまとめたDockerfileを@lambda_sakuraが作ってるので使うのも手でしょう。

最近使っているDeepLearning用の開発環境 – さくらんぼの技術備忘録 https://light-of-moe.ddo.jp/~sakura/diary/?p=510

2018/08/10現在Ubuntu18.04のCuda9.2のDockerだとTensorFlowが動かないので、Ubuntu16.04をホストに使うのが良いでしょう。

今回使ってるseq2seqは https://github.com/tensorflow/tensorflow/blob/r0.12/tensorflow/models/rnn/translate/seq2seq_model.py にあるのですが、そこで呼ばれている

tf.nn.seq2seq.embedding_attention_seq2seq

が見当たらないような気がします。どこにあるのでしょうか。v1.9だと https://github.com/tensorflow/tensorflow/blob/r1.9/tensorflow/contrib/legacy_seq2seq/python/ops/seq2seq.py がそれっぽいのですが・・

今後の課題としては、一定以上まともな返答だけを自動で返せるような仕組みにできればいいなと考えています。

AtCoder Beginner Contest 104(ABC104)に参加しました

相変わらずCDが解けない・・ってか回答見ても分かってないぞ!?

頭柔らかくしていく必要がありそう。。

 

Aは単なる分岐。

giste0e7cd9df005f0b9193daaabb9cd2612

 

Bはちょっと手間取ったけど強引に持ってった。

gist03f9de83a07890c586d8be45c4f087ca