Во время вывода я хочу вычислить среднее значение и дисперсию совокупности, которые являются входными данными в 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])
, но могу ли я все еще использовать это, если сеть использует слитную пакетную норму, а не пакетную норму?