首页 > 解决方案 > 计算给定神经网络的失败次数?

问题描述

我有一个用 Keras 编写的用于图像分类的神经网络(ALEXnet 或 VGG16),我想计算网络的浮点运算数。数据集中图像的大小可能会有所不同。可以用python编写可以自动计算触发器的通用代码吗?或者是否有任何图书馆可用。

我正在使用 spyderAnaconda,定义的网络是一个顺序模型。

谢谢你。

标签: python-3.xdeep-learningconv-neural-network

解决方案


FLOP 是模型执行的浮点运算。它通常使用模型执行的乘加运算的数量来计算。顾名思义,乘加运算是涉及两个或多个变量的乘法和加法运算。例如,表达式 a * b + c * d 有 2 个触发器,而 a * b + c * d + e * f + f * h 有 4 个触发器。

现在让我们以一个简单的线性回归模型为例。假设这个模型有 4 个参数 w1、w2、w3 和 w4 和​​一个偏差 b0。对输入数据的推断 X = [x1, x2, x3, x4] 导致输出 = x1 * h1 + x2 * h2 + x3 * h3 + x4 * h4 + b0。此操作有 4 个触发器

CNN 中的 FLOPs 测量涉及了解每一层的输入张量、滤波器和输出张量的大小。使用此信息,计算每一层的 flops 并将其相加以获得总 flops。让我们看看 VGG16 中的第一层,输入张量大小为 224x224x3,64 个过滤器大小为 3x3x3,输出大小为 224x224x64。输出中的每个元素都是由滤波器和输入张量之间的 (3x3x3) 乘加运算产生的。因此,VGG16 第一层的触发器数为 (3x3x3)x(224x224x64)= 86,704,128


推荐阅读