2D тензор ступенчатых функций без зацикливания - PullRequest
0 голосов
/ 23 декабря 2018

Мне нужно сгенерировать 2-мерный тензор из различных шаговых функций, где шаговая функция из
shape (20) with k=5 - это следующий тензор
[1,1,1,1,1,0,0,...0] (k - это число единиц)
У меня естьтензор, содержащий разные k для каждой функции шага, и в настоящее время я генерирую 2d выходной фильтр итеративно
Это мой код:

    # built 20 step functions, each with 10 variables, initializing k=5

    weight_param = tf.Variable(np.full((20), 5), dtype=tf.int32)

    kernel_filter = tf.Variable(tf.zeros((10,20),trainable=False)
    for i in range(20):
        shape_ones = 20 - weight_param[i]
        shape_zeros = weight_param[i]
        kernel_filter[:, i] = kernel_filter[:, i].assign(tf.concat([tf.ones(shape_ones, dtype=tf.float32), tf.zeros(shape_zeros, dtype=tf.float32)], axis=-1))

1 Ответ

0 голосов
/ 23 декабря 2018

Вы можете использовать tf.sequence_mask для достижения этого.Возвращает тензор маски, представляющий первые N позиций каждой ячейки.

import tensorflow as tf
import numpy as np

weight_param = tf.Variable(np.random.randint(0,20,size=20), dtype=tf.int32)
kernel_filter = tf.sequence_mask(20-weight_param, 10,dtype=tf.int32)
kernel_filter = tf.transpose(kernel_filter)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(sess.run(weight_param))
    print(sess.run(kernel_filter))

#print
[17  2 13  9 15 19 19  8 19  0 14  1 12  5  5 13 16  6 10  0]
[[1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1]
 [1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1]
 [0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 1]
 [0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1]
 [0 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1]
 [0 1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1]
 [0 1 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 1 1 1]
 [0 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 0 1 1 1]
 [0 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 0 1 1 1]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...