#tensorflow #keras #deep-learning #flops
#тензорный поток #keras #глубокое обучение #провалы
Вопрос:
У меня есть приведенный ниже код для вычисления MACC сверточного слоя.
def count_conv2d(layers, log=False):
if log:
print(layers.get_config())
#number of conv operations = input_h * input_w / stride = output^2
numshifts = int(layers.output_shape[1] * layers.output_shape[2])
# MAC/convfilter = kernelsize^2 * InputChannels * OutputChannels
MACperConv = layers.get_config()["kernel_size"][0] * layers.get_config()["kernel_size"][1] *
layers.input_shape[3] * layers.output_shape[3]
if layers.get_config()["use_bias"]:
ADD = layers.output_shape[3]
else:
ADD = 0
return MACperConv * numshifts * 2 ADD
Формула для вычисления операции MACC в обзоре литературы и на онлайн-ресурсах приведена ниже. Я хотел бы спросить, какова цель ДОБАВЛЕНИЯ в приведенное выше определение функции?
K × K × Cin × Hout × Wout × Cout
Спасибо, помощь высоко ценится.
Ответ №1:
При использовании bias
выполняется дополнительная операция суммирования ( ). bias
Вектор задается до тех пор, пока на уровне свертки есть фильтры / каналы. После выполнения операции свертки смещения добавляются к каждому каналу результата.
Итак, если есть смещение ( use_bias
верно), то вам также нужно посчитать операции сложения ( ) и добавить их к результату. Если смещение не используется, вы выполняете операцию сложения 0, поэтому вы добавляете 0 к результату.
Комментарии:
1. Привет @AndreaAngeli, почему мы считаем операции добавления в формуле, ее там нет? Не могли бы вы прояснить это для меня? Спасибо за вашу замечательную помощь.