Вопрос:

Почему `tf.constant_initializer` не принимает постоянный тензор?

python-2.7 tensorflow

3229 просмотра

2 ответа

11164 Репутация автора

Мне кажется довольно глупым, что Tensorflow решил сделать операцию, constant_initializerкоторая принимает только скалярные значения . Было бы разумно иметь возможность инициализировать переменные с постоянными тензорами:

tf.get_variable('some_var', shape = [4,3], initializer=tf.constant_initializer(tf.constant([[0,0,0], [0,0,1],[0,1,0],[1,0,0]])))

Является ли использование заполнителей и feed_dictединственный способ инициализировать тензорные переменные для пользовательских значений? Это вынуждает иметь объявления и инициализации данных в отдельных местах, что создает трудности

Автор: lurscher Источник Размещён: 06.08.2016 02:57

Ответы (2)


5 плюса

103307 Репутация автора

Решение

tf.constant_initializer()Функция может не согласиться со в tf.Tensorкачестве аргумента, но это приму в качестве своего аргумента. Это означает, что вы можете написать:tf.get_variable() tf.Tensorinitializer

v = tf.get_variable('some_var', initializer=tf.constant([[0, 0, 0],
                                                         [0, 0, 1],
                                                         [0, 1, 0],
                                                         [1, 0, 0]]))

... что требует еще меньше символов!

Причина, по tf.constant_initializer()которой не берется произвольный тензор, заключается в том, что он предназначен для инициализации переменных разных форм с одинаковым постоянным значением для каждого элемента. Например, утверждение типа:

v = tf.get_variable('some_var', shape=[15, 37], initializer=tf.constant_initializer(
    tf.constant([[0, 0, 0],
                 [0, 0, 1],
                 [0, 1, 0],
                 [1, 0, 0]])))

... не имеет особого смысла. Можно предположить, что мы могли бы tf.constant_initializer()принять скаляр tf.Tensor, и тогда у него была бы семантика, похожая на tf.fill(), но у нас еще не было спроса на это. Не стесняйтесь поднимать вопрос о GitHub, если это будет полезно!

Автор: mrry Размещён: 08.08.2016 01:35

0 плюса

1 Репутация автора

Удалите "tf.constant", сделайте как ниже, работает в TF 1.13

tf.get_variable('some_var', shape = [4,3], initializer=tf.constant_initializer(([[0,0,0], [0,0,1],[0,1,0],[1,0,0]]))
Автор: junqin zhang Размещён: 13.06.2019 05:50
Вопросы из категории :
32x32