作业
7-1 计算卷积中一共有多少次乘法和加法操作
输入数据形状是
,卷积核 ,输出通道数为 ,步幅 ,填充 。
则完成这样一个卷积,一共需要做多少次乘法和加法操作?
- 提示
先看输出一个像素点需要做多少次乘法和加法操作,然后再计算总共需要的操作次数。
- 提交方式
请回复乘法和加法操作的次数,例如:乘法1000,加法1000
7-2 计算网络层的输出数据和参数的形状
网络结构定义如下面的代码所示,输入数据形状是
,
请分别计算每一层的输出数据形状,以及各层包含的参数形状
# 定义 SimpleNet 网络结构
import paddle
import paddle.fluid as fluid
from paddle.fluid.dygraph.nn import Conv2D, Pool2D, Linear
class SimpleNet(fluid.dygraph.Layer):
def __init__(self, name_scope, num_classes=1):
super(SimpleNet, self).__init__(name_scope)
self.conv1 = Conv2D(num_channels=3, num_filters=6, filter_size=5, stride=1, padding=2, act='relu')
self.pool1 = Pool2D(pool_size=2, pool_stride=2, pool_type='max')
self.conv2 = Conv2D(num_channels=6, num_filters=16, filter_size=5, stride=1, padding=2, act='relu')
self.pool2 = Pool2D(pool_size=2, pool_stride=2, pool_type='max')
self.fc1 = Linear(input_dim=50176, output_dim=64, act='sigmoid')
self.fc2 = Linear(input_dim=64, output_dim=num_classes)
def forward(self, x):
x = self.conv1(x)
x = self.pool1(x)
x = self.conv2(x)
x = self.pool2(x)
x = fluid.layers.reshape(x, [x.shape[0], -1])
x = self.fc1(x)
x = self.fc2(x)
return x
- 提示,第一层卷积 ,各项参数如下:
则卷积核权重参数
的形状是: ,个数
偏置参数
的形状是: ,偏置参数的个数是6
输出特征图的大小是:
输出特征图的形状是
请将下面的表格补充完整:
名称 | w形状 | w参数个数 | b形状 | b参数个数 | 输出形状 |
---|---|---|---|---|---|
conv1 | [6,3,5,5] | 450 | [6] | 6 | [10, 6, 224, 224] |
pool1 | 无 | 无 | 无 | 无 | [10, 6, 112, 112] |
conv2 | |||||
pool2 | |||||
fc1 | |||||
fc2 |
- 提交方式:将表格截图发到讨论区