質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1847閲覧

Chainerで出力するユニット数が定義したユニット数と違う値になってしまう。

miyamoto0105

総合スコア216

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2016/07/01 23:08

編集2016/07/01 23:10

FFNNでポジネガの分類器がネットにあったので
改造して疑問文と普通の文に分類わけする分類器を作ろうとしました。

ところがうまくうごかないので見てみたところ、
定義したユニット出力数を明らかに超えています。
これは何故でしょうか。

定義では出力ユニットは2個にしています。

python

1in_units = x_train.shape[1] # 入力層のユニット数 (語彙数) 2 3 n_units = args.units # 隠れ層のユニット数 4 n_label = 2 # 出力層のユニット数★ここ 5 6 #モデルの定義 7 model = chainer.Chain(l1=L.Linear(in_units, n_units), 8 l2=L.Linear(n_units, n_units), 9 l3=L.Linear(n_units, n_label))

出力してみたところ

python

1 def forward(x, t, train=True): 2 h1 = F.dropout(F.relu(model.l1(x))) 3 print("l1:",h1.data.size) 4 h2 = F.dropout(F.relu(model.l2(h1))) 5 print("l2:",h2.data.size) 6 y = model.l3(h2) 7 print("l3:",y.data.size)★ここ 8 print(y.data)

こうなっています。
14個になったり72個になったり。。。

l1: 7000
l2: 7000
l3: 14
[[ 0.29107144 0.04373972]
[ 0.92364585 -1.59202814]
[ 0.62001938 -0.51301265]
[-0.42222872 0.61414009]
[-1.93305242 1.44072187]
[ 0.50924045 -0.83903521]
[ 3.12199473 -3.49920678]]

l1: 36000
l2: 36000
l3: 72
[[ 2.32765245 -2.20906782]
[-1.93214786 3.67156267]
[ 0.39572063 -0.88130361]
[ 2.94518471 -1.83502901]
[ 1.62846029 -1.38912117]
[ 1.39859521 -1.12254941]
[ 0.64408171 0.41800958]
[ 2.24334383 -1.47610319]
[ 2.34584141 -3.04963732]
[ 2.35325789 -1.99366534]
[-2.69845271 2.58477187]
[-0.21562397 -0.1244893 ]
[-0.04708913 0.66812819]
[ 2.29959583 -2.30844021]
[-0.61242813 1.06246102]
[-1.08712602 2.71169567]
[ 0.75293237 1.58493817]
[-0.23489544 1.30288994]
[ 2.74998617 -2.24589252]
[ 2.34811831 -2.51335573]
[ 1.48670304 -1.12247241]
[-0.82193547 0.64921182]
[-1.19487226 1.96339846]
[-1.59593391 1.10112405]
[-0.49538103 0.97034013]
[-1.81910849 2.53806973]
[ 2.36270428 -1.70370805]
[ 1.76038933 -2.26823711]
[ 1.94196832 -2.42412567]
[ 1.65186799 -1.53902745]
[-1.04447103 -0.36497098]
[-0.16544104 0.8142305 ]
[-1.69270718 0.26807564]
[ 3.06660318 -3.10596371]
[-1.51148021 1.8829993 ]
[ 1.82878792 -2.46266127]]

全ソースです。
https://github.com/miyamotok0105/MachineLearning/blob/master/test_chainer_ffnn_textfilter.py

下記のようなデータを作りました。
https://github.com/miyamotok0105/MachineLearning/blob/master/input.dat

疑問文を1
普通の文を0
【input.dat】

data

10 明日天気良ければいいねー 20 天気のいい日はバーベキューでしょ。 30 梅雨の時期には雨が降らないと、水不足になる。 40 温暖化の影響で日本は暑くなっている。 50 天気がいい日はハイキングでしょ。 60 天気がいい日はウォーキングよね。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

定義したとおりに出ているのでは?
chainer詳しくないので違うかもしれませんが、最初の例では

[ 0.29107144 0.04373972]

という、出力ユニット数2の結果が7個、

次の例では
[ 2.32765245 -2.20906782]

という、出力ユニット数2の結果が36個

返っているようにも見えます。

l1、l2の結果も1000(隠れ層のユニット数?)というベースに7がけした結果だったり、36がけした結果だったりするようなので、
ソースの内容を余り見ずに結果だけ見ると、
最初の例は、7回データを処理したら、2つの出力が7回出た。
次の例は、36回データを処理したら、2つの出力が36回出た。
という風に見えます。

投稿2016/07/02 00:03

eripong

総合スコア1546

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

eripong

2016/07/02 00:09

7よか36とかはミニバッチ数でしょうか。
miyamoto0105

2016/07/02 06:12

バッチ数でした。本当にありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問