示例#1
0
    def forward(self, x):
        N, C, H, W = x.shape
        out_h = int(1 + (H - self.pool_h) / self.stride)
        out_w = int(1 + (W - self.pool_w) / self.stride)

        # 展开
        col = im2col(x, self.pool_h, self.pool_w, self.stride, self.pad)
        col = col.reshape(-1, self.pool_h * self.pool_w)

        #   最大值
        out = np.max(col, axis=1)

        #   转换
        out = out.reshape(N, out_h, out_w, C).transpose(0, 3, 1, 2)

        return out
    def forward(self, x):
        FN, C, FH, FW = self.W.shape
        N, C, H, W = x.shape

        out_h = int(1 + (H + 2 * self.pad - FH) / self.stride)
        out_w = int(1 + (W + 2 * self.pad - FW) / self.stride)

        col = im2col(x, FH, FW, self.stride, self.pad)
        col_W = self.W.reshpe(FN, -1).T  # 滤波器的展开
        out = np.dot(col, col_W) + self.b

        #   转换时使用了
        # NumPy的 transpose 函数。 transpose 会更改多维数组的轴的顺序
        out = out.reshape(N, out_h, out_w, -1).transpose(0, 3, 1, 2)

        return out
示例#3
0
    def forward(self, x):
        FN, C, FH, FW = self.W.shape
        N, C, H, W = x.shape
        out_h = int(1 + (H + 2 * self.pad - FH) / self.stride)
        out_w = int(1 + (W + 2 * self.pad - FW) / self.stride)

        col = im2col(x, FH, FW, self.stride, self.pad)
#这里通过 reshape(FN,-1) 将参数指定为 -1 ,这是
# reshape 的一个便利的功能。通过在reshape 时指定为 -1,reshape 函数会自
# 动计算 -1 维度上的元素个数,以使多维数组的元素个数前后一致。比如,
# (10, 3, 5, 5)形状的数组的元素个数共有750个,指定 reshape(10,-1)后,就
# 会转换成(10, 75)形状的数组。
        col_W = self.W.reshape(FN, -1).T  # 滤波器的展开
        out = np.dot(col, col_W) + self.b
        # 转换时使用了 NumPy的 transpose 函数。 transpose 会更改多维数组的轴的顺序
        out = out.reshape(N, out_h, out_w, -1).transpose(0, 3, 1, 2)

        return out
示例#4
0
import sys, os
import numpy as np

sys.path.append(os.pardir)
from com.common.util import im2col

# im2col(input_data, filter_h, filter_w, stride=1, pad =0)
#   input_data  由(数据量,通道,高,长)的4维数组构成的输入数据
#   filter_h    滤波器的高
#   filter_w    滤波器的长
#   stride      步幅
#   pad         填充

#           批的大小为1,通道大小为3的 7 * 7 的数据
x1 = np.random.rand(1, 3, 7, 7)
col1 = im2col(x1, 5, 5, stride=1, pad=0)
print(col1.shape)  # (9,75)

#
x2 = np.random.rand(10, 3, 7, 7)
col2 = im2col(x2, 5, 5, stride=1, pad=0)
print(col2.shape)  # (90, 75)