计划清单
- 学会读取网络模型的参数量和计算量,计算一下DenseNet 的参数量和计算量
- 找到 GhostNet,Coordinate Attention 的代码,尝试加到 DenseNet 中
- webpack 继续看1.5小时视频
- 红宝书第八章的内容搂一眼,标记为未掌握内容
模型的参数量和计算量大小的统计
统计参数量的方法
total = sum([param.numel() for param in net.parameters()])
print("Number of parameter: %.2fM" % (total/1e6))
利用库函数统计计算量和参数量
from ptflops import get_model_complexity_info
ops, params = get_model_complexity_info(net, (3, 224, 224), as_strings=True, print_per_layer_stat=True, verbose=True)
参数量
| 模型 | 参数量 |
|---|---|
| DenseNet_40_K_12 | 1.06M |
| DenseNetMobile_40_K_12 | 0.34M |
计算量 Flops
| 模型 | 计算量 |
|---|---|
| DenseNet_40_K_12 | 0.29G |
| DenseNetMobile_40_K_12 | 0.11G |
代码
找到了 GhostNet,Coordinate Attention 的代码,将 Coordinate Attention 加到了 DenseNet 模型中,测试效果中~
webpack
总结一下 webpack 的几点内容
webpack 的配置模板
- 通过
module.exports来导出配置项 - 添加入口文件
entry - 添加输出配置
output - 添加
loader配置,loader通过module下的rules数组来配置多个对象,来处理不同的文件,比如 css 文件,less 文件,都需要不同的 loader 来进行转换,一个对象只能供一个加载一个文件使用。配置对象使用test来检测文件,通过use数组中的loader来进行转换,并且数组中的loader应该是出栈的方式来使用 - 添加
plugins数组配置,在数组中应该是去 new 一些实例 - 通过
mode来配置是一开发模式还是生产模式打包,生产模式打包时会对代码进行压缩
module.exports = {
entry: './src/index.js',
output: {
// 输出的文件名
filename: 'built.js',
// 输出的路径 __dirname nodejs的变量,代表当前的目录绝对路径
path: resolve(__dirname, 'build')
},
// loader 配置
module: {
rules: [
// 详细的 loader 配置
{
test: /\.css$/,
// loader 数组中的 loader 是从下往上执行的,先执行 css-loader,然后再执行 style-loader
use: [
// 创建 style 标签,将 js 中的样式资源插入其实,添加到 head 中生效
'style-loader',
// 将 css 文件变成 common.js 模块加载在 js 中,里面的内容是样式字符串
'css-loader'
]
},
// 就像是这里的运行流程,先使用 less-loader 将 less 文件翻译成 css 文件
// 然后再用 css-loader 将 css 文件翻译成 js
// 最后使用 style-loader,生成 style 标签,放在 head 标签下
{
test: /\.less$/,
use: [
'style-loader',
'css-loader',
'less-loader'
]
}
]
},
// plugins 配置
plugins: [
// 详细的 plugins 配置
],
mode: 'development'
}