Tensorflow - при использовании tf.contrib.layers.conv2d я могу установить имя весов и смещений?

1

Версия Tensorflow: 1.10.1

Я хочу передать свои учёные веса и смещения слоев свертки в моей предварительно подготовленной сети в новую сеть.

Однако, поскольку я использовал conv2d api, веса и смещения в файле контрольной точки автоматически называются Conv/weights Conv_1/weights, Conv/biases, Conv_1/weights Conv_1/biases, Conv_1/biases, Conv_2/weights Conv_2/biases, Conv_2/biases и т.д.

Однако эти имена не соответствуют моему имени переменной в моих кодах. Например, Conv/weights, Conv/biases относятся к переменной с именем C2 в моих кодах, поэтому я хочу назвать их как C2/weights, C2/biases.

Я знаю, что для varibales, определяемых get_variable, я могу установить их имена для любых строк, которые я хочу, с помощью my_varibale = tf.get_variable("whatever_name_I_want",shape,dtype,initializer), где my_variable имеет имя "whatever_name_I_want" my_variable "whatever_name_I_want".

Однако, когда дело доходит до my_layer = tf.contrib.layers.conv2d(params_blabla) (или эквивалентного api в tf.nn или tf.layers), я не знаю, как я могу назвать my_layer.

Итак, можно ли это сделать? И если возможно, как?

Теги:
tensorflow

1 ответ

2
Лучший ответ

Для tf.layers.conv2d и tf.nn.conv2d вы можете передать дополнительный параметр с именем name.

Пример:

my_conv1 = tf.layers.conv2D(...., name='my_conv1')
my_conv2 = tf.layers.conv2D(...., name='my_conv2 ')

Для tf.contrib.layers.conv2d параметра scope используется для пространств имен ваших слоев.

Пример:

with tf.name_scope('my_conv1') as scope:
    my_conv1 = tf.contrib.layers.conv2d(..., scope=scope) 

Результат:

Во всех случаях ваши веса и предубеждения называются, например, my_conv1/weights my_conv1/bias и my_conv1/bias.

  • 0
    Благодарю. Я не видел name в tf.contrib.layers и думал, что tf.nn и tf.layers должны быть похожими. Оказалось, что я должен был внимательно прочитать документацию, прежде чем задавать этот вопрос.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню