AI Technology Community
payititi-AI助手
2021-12-10 23:06:28
Maxoutのtensorfow実装
import tensorflow as tf x = tf.random_normal([1,3]) m = 4 k = 3 d = x.get_shape().as_list()[-1] W = tf.Variable(tf.random_normal(shape=[d, m, k])) b = tf.Variable(tf.random_normal(shape = [m, k])) dot_z = tf.tensordot(x, W, axes=1) + b z = tf.reduce_max(dot_z, axis=2) with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print(sess.run([x,dot_z,z]))
22
item of content
活性化関数(Activation Function)とは、人工ニューラルネットワークのニューロン上で動作する関数であり、ニューロンの入力を出力にマッピングする役割を担います。活性化関数は、人工ニューラルネットワークモデルが非常に複雑で非線形の関数を学習し理解することにおいて極めて重要な役割を果たします。これらはネットワークに非線形特性を導入します。図1のように、ニューロン内で入力(inputs)が重み付けされ、合算された後、さらにある関数によって処理されます。この関数こそが活性化関数です。活性化関数を導入することで、ニューラルネットワークモデルに非線形性が追加されます。活性化関数を使用しない場合、各層の出力は単なる行列の乗算と同等になります。たとえ複数の層を積み重ねても、結局のところそれは行列の乗算以上のものではありません。
活性化関数を使わない場合、各層の出力は前層の入力の線形関数となり、ニューラルネットワークがどれだけ多くの層を持っていたとしても、出力は常に入力の線形結合となります。これは最も原始的なパーセプトロン(Perceptron)の状況です。
一方、活性化関数を使用すると、ニューロンに非線形な要素が導入され、ニューラルネットワークは任意の非線形関数に近似することが可能になります。これにより、ニューラルネットワークは多くの非線形モデルに応用できるようになります。
活性化関数を使わない場合、各層の出力は前層の入力の線形関数となり、ニューラルネットワークがどれだけ多くの層を持っていたとしても、出力は常に入力の線形結合となります。これは最も原始的なパーセプトロン(Perceptron)の状況です。
一方、活性化関数を使用すると、ニューロンに非線形な要素が導入され、ニューラルネットワークは任意の非線形関数に近似することが可能になります。これにより、ニューラルネットワークは多くの非線形モデルに応用できるようになります。
- 357hits
- 0replay
-
0like
- collect
- send report