Норма слияния тензора с нормой партии - PullRequest
0 голосов
/ 09 апреля 2020

Во время вывода я хочу вычислить среднее значение и дисперсию совокупности, которые являются входными данными в tf.nn.fused_batch_norm, и сравнить среднее значение и дисперсии совокупности со средним и дисперсией скользящего среднего. Я думал, что мог бы потенциально использовать tf.nn_moments, чтобы найти среднее / дисперсию населения, но теперь я не уверен, так как, основываясь на чтении онлайн-постов, среднее / дисперсия населения и среднее / дисперсия, возвращаемые функцией моментов, не являются одни и те же. Любая помощь по этому вопросу будет принята с благодарностью. Вот мой код ниже:

Эти строки извлекают скользящее среднее и дисперсию, которые хранятся в сети при выводе:

variables = tf.global_variables()
vars_moving_mean = []
vars_moving_variance = []
for var in variables:
    if ("bn/mean" in var.name):
         vars_moving_mean.append(var)

    elif ("bn/variance" in var.name):
         vars_moving_variance.append(var)

Что я хочу сейчас сделать, это взять входные данные для уровней пакетной нормы и мои собственные вычисления, чтобы найти среднее значение и дисперсию (как если бы модель обучалась), поэтому я могу сравнить эти значения со скользящим средним и дисперсией, извлеченными выше. Я надеялся извлечь эти значения, используя следующий код:

mean, var = tf.nn.moments(input_to_batch_norm, axes =[0,1,2])

, но могу ли я все еще использовать это, если сеть использует слитную пакетную норму, а не пакетную норму?

...