Я бы рекомендовал настроить его немного по-другому.Вместо того чтобы использовать tf.layers.conv2d, я бы явно делал весовые коэффициенты, используя вызовы tf.get_variable (), а затем использовал эти весовые коэффициенты для вызовов tf.nn.conv2d ().Таким образом, вы не заносите переменные в черный ящик и можете легко ссылаться на них.Это также хороший способ точно узнать, что происходит в вашей сети, поскольку вы написали фигуры для каждого набора весов вручную!
Пример (непроверенный) кода:
inputs = tf.placeholder(tf.float32, (batch_size, 512, 512, 3), name='inputs')
weights = tf.get_variable(name='weights', shape=[5, 5, 3, 16], dtype=tf.float32)
with tf.variable_scope("convs"):
hidden_layer_1 = tf.nn.conv2d(input=inputs, filter=weights, stride=[1, 1, 1, 1], padding="SAME")
with tf.variable_scope("convs", reuse=True):
hidden_layer_2 = tf.nn.conv2d(input=hidden_layer_1, filter=weights,stride=[1, 1, 1, 1], padding="SAME"
Этосоздает сверточные веса и применяет их дважды к вашему входу.Я не проверял этот код, поэтому могут быть ошибки, но он о том, как он должен выглядеть.Ссылки здесь для совместного использования переменных и здесь для tf.nn.conv2d .
Надеюсь, это поможет!Я был бы более тщательным, но я понятия не имею, как выглядит ваш код.