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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Q&A

解決済

1回答

1914閲覧

活性化関数ReLUについて

yone_yone

総合スコア28

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

0グッド

0クリップ

投稿2018/07/07 04:08

階層型ニューラルネットワークでの活性化関数についての質問になります。

現在、活性化関数は中間層と出力層ともにシグモイド関数を用いているのですが、中間層のみReLU関数にしようと考えています。

tensorflowでの実装の仕方を調べたところ、ReLU関数の引数のところの書き方が様々あり、わからない状態にあります。

python

1#シグモイドのみ 2y1 = tf.sigmoid(tf.matmul(input, weights)) 3y2 = tf.sigmoid(tf.matmul(y1, weights1)) 4yhat = tf.sigmoid(tf.matmul(y2, weights2)) 5 6#変更後、中間層にReLUを適用 7y1 = tf.nn.relu((tf.matmul(input, weights))) 8y2 = tf.nn.relu(tf.matmul(y1, weights1))) 9yhat = tf.sigmoid(tf.matmul(y2, weights2))

このようなコードでやろうとしているのですが、いくつかのサイトでこのようなコードをみました。

python

1y1 = tf.nn.relu(tf.matmul(input, weights)+bias)

これはbiasを使っているときのみこのような引数を与えるのでしょうか?

私自身、ニューラルネットワークを学んでから数ヶ月の段階ですので、簡単な質問かもしれませんが、ご回答いただけるとありがたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

y_i = Sum_j(w_ij * x_j) + b_i

が本来の形です。

http://hooktail.org/computer/index.php?Perceptron


y1 = tf.sigmoid(tf.matmul(input, weights))

のときはb=0を強制しているだけです。

投稿2018/07/07 07:15

編集2018/07/07 07:17
mkgrei

総合スコア8560

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

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

yone_yone

2018/07/07 09:18 編集

ご回答ありがとうございます。 やはりそういう意味だったんですね。 ちなみになのですが、このb=0は何かしらの値を与えていたほうが良いのでしょうか? 精度に影響はなかったりするのでしょうか?
mkgrei

2018/07/07 12:22

バイアスがないことが正しい、ということでなければ、あった方がいいです。 ない場合というのは、前処理で取り除かれている、珍しいケースです。 級数での近似を考えた際に、0次、1次、2次…と次数を上げていくのが常套手段です。 ニューロンのモデルというのは、1次で打ち切った最もシンプルなものを、非線形な活性化関数を入れることによって、非線形性を表現できるようにしたものです。 なので、0次に当たるバイアス項は普通は必要なものになります。
yone_yone

2018/07/08 04:39

なるほど。分かりやすい回答ありがとうございます。 本当に助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問