SlideShare a Scribd company logo
1 of 17
Download to read offline
内省する TensorFlow
2015.12.11 @ DeNA
自己紹介
柿原祥之 @1664riffs
ジョイズ株式会社 代表
• スタートアップ(調達済)
• ロールプレイ英会話の対話、評価、指
導をするアプリをつくってます
• むかしは
• データ解析基盤開発@大英気象庁
• 車載機器ソフトウェア開発、技術渉
外@ソニー
内省
1. 自分自身の心のはたらきや状態をかえりみること。
2. 「内観(ないかん)」に同じ。
( 三省堂大辞林より )
TFのソースをTFで予測しよう
ニューラルネット言語モデルをつくる
Recurrent Neural Network
• 可変長の入力系を扱える
• 時系列データに向いている
• 言語
• 音
• センサー
• 今回は言語モデル生成に活用
• ある文字の配列の次に来る文字を予
測する
TensorFlow の内訳
SLOC Directory SLOC-by-Language (Sorted)
148740 tensorflow cpp=105165,python=42584,java=850,sh=141
82875 third_party cpp=43163,ansic=39427,python=167,sh=118
Totals grouped by language (dominant language first):
cpp: 148328 (63.98%)
python: 42751 (18.44%)
ansic: 39427 (17.01%)
java: 850 (0.37%)
sh: 472 (0.20%)
• C, CPP で19万行程度
学習データ準備
def pickup_files(git_root, extensions):
for (dirpath, dirnames, filenames) in os.walk(git_root):
for fn in filenames:
for ext in extensions:
if fn.endswith(ext):
yield os.path.join(dirpath, fn)
def writeout(git_root, extensions, out_file):
for filename in pickup_files(git_root, extensions):
with open(filename, 'r') as f:
out.write(f.read() + 'nnn')
print('{} read and written out.'.format(filename))
10MBほどになります
学習データ準備2
# ソースコードなのでtokenize等せず文字ベースで扱う
with open(input_file, "r") as f:
data = f.read()
counter = collections.Counter(data)
## 省略 ##
# Indexing
self.vocab = dict(zip(self.chars, range(len(self.chars))))
# テンソル化してディスクに保存
self.tensor = np.array(map(self.vocab.get, data))
np.save(tensor_file, self.tensor)
モデルの設定 ※コードは端折ってます
from tensorflow.models.rnn import rnn_cell
cell = rnn_cell.BasicLSTMCell(args.rnn_size)
cell = rnn_cell.MultiRNNCell([cell] * args.num_layers)
#### 省略 ####
loss = seq2seq.sequence_loss_by_example([logits],
[tf.reshape(targets, [-1])],
[tf.ones([args.batch_size * args.seq_length])],
args.vocab_size)
cost = tf.reduce_sum(loss) / args.batch_size / args.seq_length
#### 省略 ####
• RNN/LSTMのモデル含め同梱物が多く楽
• ちなみに今回は128x2層でやっています
学習に使うメインループ
# セッション(実行マネージャ)貼る
with tf.Session() as sess:
tf.initialize_all_variables().run()
for e in xrange(args.num_epochs):
sess.run(tf.assign(model.lr, args.learning_rate * (args.decay_rate ** e)))
data_loader.reset_batch_pointer()
state = model.initial_state.eval()
for b in xrange(data_loader.num_batches):
# データ取ってくる
x, y = data_loader.next_batch()
feed = {model.input_data: x, model.targets: y, model.initial_state: state}
# 定義済のオペレーションを走らせる
train_loss, state, _ = sess.run([model.cost, model.final_state, model.train_op], feed)
結果
(root)tensorflow-rnn > python predict.py
Status NALS:
eifent_attrees:
{
return actual(v, sizeof(), right >> 1024 > 0;
}
// the declares retval.
int llasis_module = truth;
};
template <typename T>
struct Split<CoeffReturnType> blockmd(const uint64_t* blockAllocation) const {
uint32 must b = (_(2)).data(), alpha);
return h_i + 1.value;
// hol[FNSTMTH allowed stream_i != 0) {
src_t s30 = 6;
Input(e_.extrage().implementation(1));
// 'Extras(stream, dst_loadhan), new GraphDef(end, a|0))`.
tensorflow::output_solve_retvalFunc(internal::array_int_tr,
const string& name,
uint64 side) const &StreamExecutor : Collection* get_random the const Eigen*/_mask_op.clee.
ちゃんとCらしいコードが出ました
感想
1. やっぱり計算が重い(30min/epoch)
2. 流石にコンパイルは通りませんでした
3. 豊富に用意されている計算ユニットを使えば数値計算のコード
がほぼゼロ
4. 個人的にはChainerの方が直感的で使いやすい
5. 分散処理で俺TUEEしたりモバイル向けのモデル出力を試したい
ところで…
機械学習や言語処理を勉強してみてはいるが
面白いプロジェクトがなかなかない
転職までは思い切れないが力試しをしてみたい
そんな方にお知らせです
学生・社会人インターン募集中
• 渋谷区東1丁目
• 週∼10h 程度、給料でます
• Slack, GitHub, Trello, Python 3.4, Django 1.8
• 海外在住の英語教育専門家ふくめ、9人体制で開発
• バイリンガル環境(日本語・英語)
インターンプロジェクト(候補)
1. 英会話文の難易度推定
2. 英会話文の言い換え候補推定
3. 音声認識のドメイン特化辞書の自動生成
ほか応相談
話を聞いてみたいという方はぜひ
このツイートにfavしてください
こちらから連絡差し上げます
h"ps://twi"er.com/1664riffs/status/672312408577212416
ありがとうございました!

More Related Content

What's hot

思いついたアルゴリズムを TensorFlow で実装してみた話
思いついたアルゴリズムを TensorFlow で実装してみた話思いついたアルゴリズムを TensorFlow で実装してみた話
思いついたアルゴリズムを TensorFlow で実装してみた話Shuhei Fujiwara
 
TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!Kei Hirata
 
言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクールYuya Unno
 
子供の言語獲得と機械の言語獲得
子供の言語獲得と機械の言語獲得子供の言語獲得と機械の言語獲得
子供の言語獲得と機械の言語獲得Yuya Unno
 
TensorFlowで逆強化学習
TensorFlowで逆強化学習TensorFlowで逆強化学習
TensorFlowで逆強化学習Mitsuhisa Ohta
 
TensorFlowによるFizz Buzz
TensorFlowによるFizz BuzzTensorFlowによるFizz Buzz
TensorFlowによるFizz Buzzyaju88
 
最先端NLP勉強会 “Learning Language Games through Interaction” Sida I. Wang, Percy L...
最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...
最先端NLP勉強会 “Learning Language Games through Interaction” Sida I. Wang, Percy L...Yuya Unno
 
Facebookの人工知能アルゴリズム「memory networks」について調べてみた
Facebookの人工知能アルゴリズム「memory networks」について調べてみたFacebookの人工知能アルゴリズム「memory networks」について調べてみた
Facebookの人工知能アルゴリズム「memory networks」について調べてみた株式会社メタップスホールディングス
 
NIP2015読み会「End-To-End Memory Networks」
NIP2015読み会「End-To-End Memory Networks」NIP2015読み会「End-To-End Memory Networks」
NIP2015読み会「End-To-End Memory Networks」Yuya Unno
 
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 [最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 Yuki Arase
 
@nifty エンジニアサポートの使い方
@nifty エンジニアサポートの使い方@nifty エンジニアサポートの使い方
@nifty エンジニアサポートの使い方Yuichi Saotome
 
ニューラルチューリングマシン入門
ニューラルチューリングマシン入門ニューラルチューリングマシン入門
ニューラルチューリングマシン入門naoto moriyama
 
Jubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニングJubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニングYuya Unno
 
ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】Yuki Arase
 
Lighting talk chainer hands on
Lighting talk chainer hands onLighting talk chainer hands on
Lighting talk chainer hands onOgushi Masaya
 

What's hot (18)

思いついたアルゴリズムを TensorFlow で実装してみた話
思いついたアルゴリズムを TensorFlow で実装してみた話思いついたアルゴリズムを TensorFlow で実装してみた話
思いついたアルゴリズムを TensorFlow で実装してみた話
 
TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!TensorFlowで遊んでみよう!
TensorFlowで遊んでみよう!
 
言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール言語と知識の深層学習@認知科学会サマースクール
言語と知識の深層学習@認知科学会サマースクール
 
子供の言語獲得と機械の言語獲得
子供の言語獲得と機械の言語獲得子供の言語獲得と機械の言語獲得
子供の言語獲得と機械の言語獲得
 
TensorFlowで逆強化学習
TensorFlowで逆強化学習TensorFlowで逆強化学習
TensorFlowで逆強化学習
 
TensorFlowによるFizz Buzz
TensorFlowによるFizz BuzzTensorFlowによるFizz Buzz
TensorFlowによるFizz Buzz
 
最先端NLP勉強会 “Learning Language Games through Interaction” Sida I. Wang, Percy L...
最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...最先端NLP勉強会“Learning Language Games through Interaction”Sida I. Wang, Percy L...
最先端NLP勉強会 “Learning Language Games through Interaction” Sida I. Wang, Percy L...
 
Emnlp読み会資料
Emnlp読み会資料Emnlp読み会資料
Emnlp読み会資料
 
Facebookの人工知能アルゴリズム「memory networks」について調べてみた
Facebookの人工知能アルゴリズム「memory networks」について調べてみたFacebookの人工知能アルゴリズム「memory networks」について調べてみた
Facebookの人工知能アルゴリズム「memory networks」について調べてみた
 
TensorFlow 入門
TensorFlow 入門TensorFlow 入門
TensorFlow 入門
 
NIP2015読み会「End-To-End Memory Networks」
NIP2015読み会「End-To-End Memory Networks」NIP2015読み会「End-To-End Memory Networks」
NIP2015読み会「End-To-End Memory Networks」
 
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」 [最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
[最新版] JSAI2018 チュートリアル「"深層学習時代の" ゼロから始める自然言語処理」
 
@nifty エンジニアサポートの使い方
@nifty エンジニアサポートの使い方@nifty エンジニアサポートの使い方
@nifty エンジニアサポートの使い方
 
ニューラルチューリングマシン入門
ニューラルチューリングマシン入門ニューラルチューリングマシン入門
ニューラルチューリングマシン入門
 
Deep forest
Deep forestDeep forest
Deep forest
 
Jubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニングJubatusの紹介@第6回さくさくテキストマイニング
Jubatusの紹介@第6回さくさくテキストマイニング
 
ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】ゼロから始める自然言語処理 【FIT2016チュートリアル】
ゼロから始める自然言語処理 【FIT2016チュートリアル】
 
Lighting talk chainer hands on
Lighting talk chainer hands onLighting talk chainer hands on
Lighting talk chainer hands on
 

Similar to 内省するTensorFlow

R言語の勉強始めました
R言語の勉強始めましたR言語の勉強始めました
R言語の勉強始めましたTatsuya Nagae
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニングMunenori Sugimura
 
TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築Hirokatsu Kataoka
 
JUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラJUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラLeapMind Inc
 
nl-1. 形態素解析と構文解析
nl-1. 形態素解析と構文解析nl-1. 形態素解析と構文解析
nl-1. 形態素解析と構文解析kunihikokaneko1
 
JUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラJUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラTakeo Imai
 
Hadoopエンタープライズソリューションセミナー2012: Hadoop&RabbitMQを利用したTwitter全量リアルタイム解析
Hadoopエンタープライズソリューションセミナー2012: Hadoop&RabbitMQを利用したTwitter全量リアルタイム解析Hadoopエンタープライズソリューションセミナー2012: Hadoop&RabbitMQを利用したTwitter全量リアルタイム解析
Hadoopエンタープライズソリューションセミナー2012: Hadoop&RabbitMQを利用したTwitter全量リアルタイム解析Kenji Hara
 
Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処...
Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処...Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処...
Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処...Kenji Hara
 
TensorFlow on Mobile
TensorFlow on MobileTensorFlow on Mobile
TensorFlow on Mobile新 古川
 
さくさくテキストマイニング入門セッション
さくさくテキストマイニング入門セッションさくさくテキストマイニング入門セッション
さくさくテキストマイニング入門セッションantibayesian 俺がS式だ
 
Machine Learning Seminar (5)
Machine Learning Seminar (5)Machine Learning Seminar (5)
Machine Learning Seminar (5)Tomoya Nakayama
 
一年目がWatsonを調べてみた Discovery編
一年目がWatsonを調べてみた Discovery編一年目がWatsonを調べてみた Discovery編
一年目がWatsonを調べてみた Discovery編Jin Hirokawa
 
Interop2017
Interop2017Interop2017
Interop2017tak9029
 
開発チームにローカライズ支援職を置くと…
開発チームにローカライズ支援職を置くと…開発チームにローカライズ支援職を置くと…
開発チームにローカライズ支援職を置くと…Self Employed
 
言語資源と付き合う
言語資源と付き合う言語資源と付き合う
言語資源と付き合うYuya Unno
 
自作flutterアプリをリファクタリングしてみた!
自作flutterアプリをリファクタリングしてみた!自作flutterアプリをリファクタリングしてみた!
自作flutterアプリをリファクタリングしてみた!とさ はるき
 
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Shinobu Kawano
 
Basic deep learning_framework
Basic deep learning_frameworkBasic deep learning_framework
Basic deep learning_frameworkKazuhiroSato8
 

Similar to 内省するTensorFlow (20)

R言語の勉強始めました
R言語の勉強始めましたR言語の勉強始めました
R言語の勉強始めました
 
おとなのテキストマイニング
おとなのテキストマイニングおとなのテキストマイニング
おとなのテキストマイニング
 
TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築
 
JUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラJUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep Learningコンパイラ
 
nl-1. 形態素解析と構文解析
nl-1. 形態素解析と構文解析nl-1. 形態素解析と構文解析
nl-1. 形態素解析と構文解析
 
Tensorgo
TensorgoTensorgo
Tensorgo
 
JUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラJUIZ DLK: 組込み向け Deep Learning コンパイラ
JUIZ DLK: 組込み向け Deep Learning コンパイラ
 
Hadoopエンタープライズソリューションセミナー2012: Hadoop&RabbitMQを利用したTwitter全量リアルタイム解析
Hadoopエンタープライズソリューションセミナー2012: Hadoop&RabbitMQを利用したTwitter全量リアルタイム解析Hadoopエンタープライズソリューションセミナー2012: Hadoop&RabbitMQを利用したTwitter全量リアルタイム解析
Hadoopエンタープライズソリューションセミナー2012: Hadoop&RabbitMQを利用したTwitter全量リアルタイム解析
 
Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処...
Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処...Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処...
Hadoop Conference Japan 2013 Winter: "見える"Twitter全量リアルタイム解析 ~Hadoop/RabbitMQ処...
 
TensorFlow on Mobile
TensorFlow on MobileTensorFlow on Mobile
TensorFlow on Mobile
 
ヤフー音声認識のご紹介#yjdsw1
ヤフー音声認識のご紹介#yjdsw1ヤフー音声認識のご紹介#yjdsw1
ヤフー音声認識のご紹介#yjdsw1
 
さくさくテキストマイニング入門セッション
さくさくテキストマイニング入門セッションさくさくテキストマイニング入門セッション
さくさくテキストマイニング入門セッション
 
Machine Learning Seminar (5)
Machine Learning Seminar (5)Machine Learning Seminar (5)
Machine Learning Seminar (5)
 
一年目がWatsonを調べてみた Discovery編
一年目がWatsonを調べてみた Discovery編一年目がWatsonを調べてみた Discovery編
一年目がWatsonを調べてみた Discovery編
 
Interop2017
Interop2017Interop2017
Interop2017
 
開発チームにローカライズ支援職を置くと…
開発チームにローカライズ支援職を置くと…開発チームにローカライズ支援職を置くと…
開発チームにローカライズ支援職を置くと…
 
言語資源と付き合う
言語資源と付き合う言語資源と付き合う
言語資源と付き合う
 
自作flutterアプリをリファクタリングしてみた!
自作flutterアプリをリファクタリングしてみた!自作flutterアプリをリファクタリングしてみた!
自作flutterアプリをリファクタリングしてみた!
 
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門
 
Basic deep learning_framework
Basic deep learning_frameworkBasic deep learning_framework
Basic deep learning_framework
 

内省するTensorFlow