2016-03-28 10 views
8

Teraz max funkcja łączenie w tensorflow jestJaki jest najlepszy sposób na górę elementów k pool zamiast tylko maksimum w Tensorflow?

 
tf.nn.max_pool(value, ksize, strides, padding, name=None) 
Returns: 
A Tensor with type tf.float32. The max pooled output tensor. 

chciałbym mieć wersję rozszerzenia o max_pool, jak

 
tf.nn.top_k_pool(value, ksize, strides, padding, k=1, name=None) 

Performs the top k pooling on the input. 

Args: 

value: A 4-D Tensor with shape [batch, height, width, channels] and type tf.float32. 
ksize: A list of ints that has length >= 4. The size of the window for each dimension of the input tensor. 
strides: A list of ints that has length >= 4. The stride of the sliding window for each dimension of the input tensor. 
padding: A string, either 'VALID' or 'SAME'. The padding algorithm. 
k: 0-D int32 Tensor. Number of top elements to look in each pool. 
name: Optional name for the operation. 
Returns: 

A Tensor with type tf.float32. The max pooled output tensor. There will be an additional dimension saving the top k values. 

wiem, że mogę wydać operację tensorflow następujące https://www.tensorflow.org/versions/r0.7/how_tos/adding_an_op/index.html

Chciałbym wiedzieć, czy jest łatwiejszy sposób, aby to osiągnąć.

+0

czy znalazłeś rozwiązanie? – yazfield

Odpowiedz

2

Oto funkcja użyciem top_k podjąć max k aktywacje kanałów. Możesz go zmodyfikować, aby dopasować swój cel:

def make_sparse_layer(inp_x,k, batch_size=None): 

    in_shape = tf.shape(inp_x) 
    d = inp_x.get_shape().as_list()[-1] 
    matrix_in = tf.reshape(inp_x, [-1,d]) 
    values, indices = tf.nn.top_k(matrix_in, k=k, sorted=False) 
    out = [] 
    vals = tf.unpack(values, axis=0, num=batch_size) 
    inds = tf.unpack(indices, axis=0, num=batch_size) 
    for i, idx in enumerate(inds): 
     out.append(tf.sparse_tensor_to_dense(tf.SparseTensor(tf.reshape(tf.cast(idx,tf.int64),[-1,1]),vals[i], [d]), validate_indices=False)) 
    shaped_out = tf.reshape(tf.pack(out), in_shape) 
    return shaped_out 
Powiązane problemy