2016-10-10 8 views

答えて

1

私はmaxoutアクティベーションがあるとは思わないが、自分で自分自身を作ることを止めるものは何もない。次のようなことができます。これが構文エラーのかもしれないが、あなたは一般的なアイデアを得る必要がありますので、私はちょうど私のブラウザで書いたコードであること

with tf.variable_scope('maxout'): 
    layer_input = ... 
    layer_output = None 
    for i in range(n_maxouts): 
    W = tf.get_variable('W_%d' % d, (n_input, n_output)) 
    b = tf.get_variable('b_%d' % i, (n_output,)) 
    y = tf.matmul(layer_input, W) + b 
    if layer_output is None: 
     layer_output = y 
    else: 
     layer_output = tf.maximum(layer_output, y) 

注意。単に多くの線形変換を実行し、すべての変換で最大値を取るだけです。

4

私はリンクがあり、ここで、MAXOUTためのプルリクエストを送信し、次のよう

https://github.com/tensorflow/tensorflow/pull/5528

コードは次のとおりです。ここで

def maxout(inputs, num_units, axis=None): 
    shape = inputs.get_shape().as_list() 
    if axis is None: 
     # Assume that channel is the last dimension 
     axis = -1 
    num_channels = shape[axis] 
    if num_channels % num_units: 
     raise ValueError('number of features({}) is not a multiple of num_units({})' 
      .format(num_channels, num_units)) 
    shape[axis] = -1 
    shape += [num_channels // num_units] 
    outputs = tf.reduce_max(tf.reshape(inputs, shape), -1, keep_dims=False) 
    return outputs 

は、それがどのように動作するかです:

github screenshot

0

このコードはどうですか? これは私のテストでうまくいくようです。

def max_out(input_tensor,output_size): 
shape = input_tensor.get_shape().as_list() 
if shape[1] % output_size == 0: 
    return tf.transpose(tf.reduce_max(tf.split(input_tensor,output_size,1),axis=2)) 
else: 
    raise ValueError("Output size or input tensor size is not fine. Please check it. Reminder need be zero.") 

the following pageの図を参照してください。

関連する問題