コード例 #1
0
    def __init__(self,
                 args,
                 kernel_sizes=[8, 5, 3],
                 out_channels=[128, 256, 128],
                 strides=[1, 1, 1]):
        """
        Create the FCNN model in PyTorch.

        :param args: the general arguments (conv type, debug mode, etc).
        :param dtype: global - the type of pytorch data/weights.
        :param kernel_sizes: the sizes of the kernels in each conv layer.
        :param out_channels: the number of filters for each conv layer.
        :param strides: the strides for the convolutions.
        """
        super(FCNNPytorch, self).__init__()
        # input_size: the length (width) of the time series.
        self.input_size = args.input_size
        # num_classes: number of output classes.
        self.num_classes = args.num_classes
        # in_channels: number of channels in the input data.
        self.in_channels = args.in_channels
        self.dtype = args.dtype
        self.kernel_sizes = kernel_sizes
        self.out_channels = out_channels
        self.strides = strides
        self.conv_type = args.conv_type
        self.is_debug = args.is_debug
        self.preserve_energy = args.preserve_energy

        self.relu = nn.ReLU(inplace=True)
        # For the "same" mode for the convolution, pad the input.
        conv_pads = [kernel_size - 1 for kernel_size in kernel_sizes]

        conv = Conv(kernel_sizes=kernel_sizes,
                    in_channels=self.in_channels,
                    out_channels=out_channels,
                    strides=strides,
                    padding=conv_pads,
                    args=args)

        index = 0
        self.conv0 = conv.get_conv(param_index=index)
        self.bn0 = nn.BatchNorm1d(num_features=out_channels[index])

        index = 1
        self.conv1 = conv.get_conv(param_index=index)
        self.bn1 = nn.BatchNorm1d(num_features=out_channels[index])

        index = 2
        self.conv2 = conv.get_conv(param_index=index)
        self.bn2 = nn.BatchNorm1d(num_features=out_channels[index])
        self.lin = nn.Linear(out_channels[index], self.num_classes)
コード例 #2
0
    def __init__(self,
                 input_size,
                 args,
                 num_classes=10,
                 in_channels=1,
                 kernel_sizes=[5, 5],
                 out_channels=[10, 20],
                 strides=[1, 1],
                 flat_size=320):
        """
        :param input_size:
        :param args: the general arguments for the program, e.g. conv type.
        :param num_classes:
        :param in_channels:
        :param dtype:
        :param kernel_sizes:
        :param out_channels:
        :param strides:
        :param batch_size:
        :param flat_size: the size of the flat vector after the conv layers.
        """
        super(LeNet, self).__init__()
        self.input_size = input_size
        self.args = args
        if out_channels is None:
            self.out_channels = [10, 20]
        else:
            self.out_channels = out_channels
        if flat_size is None:
            self.flat_size = 320  # for MNIST dataset
        else:
            self.flat_size = flat_size

        self.relu = nn.ReLU(inplace=True)
        # For the "same" mode for the convolution, pad the input.
        conv_pads = [0 for _ in kernel_sizes]

        conv = Conv(kernel_sizes=kernel_sizes,
                    in_channels=in_channels,
                    out_channels=out_channels,
                    strides=strides,
                    padding=conv_pads,
                    args=args)

        # self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
        self.conv1 = conv.get_conv(param_index=0)
        # self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
        self.conv2 = conv.get_conv(param_index=1)
        self.conv2_drop = nn.Dropout2d()
        self.fc1 = nn.Linear(flat_size, 50)
        self.fc2 = nn.Linear(50, num_classes)