Hello world

For test


Hello world

This is test blog inline code.

header 2

Python code

from os import name
import torch.nn as nn
import torch.nn.functional as F
import torch
from torch.autograd import Variable
from torch.nn.modules.utils import _pair
 
class ConvRNNCellBase(nn.Module):
    # format string representation
    def __repr__(self):
        s = (
            '{name}({input_channels}), {hidden_channels}, kernel_size={kernel_size}'
            ', stride={stride}'
        )
 
        if self.padding != (0, ) * len(self.padding):
            s += ', padding={padding}'
        if self.dilation != (1, ) * len(self.dilation):
            s += ', dilation={dilation}'
 
        s += ', hidden_kernel_size={hidden_kernel_size}'
        s += ')'
 
        return s.format(name=self.__class__.__name__, **self.__dict__)
 
class ConvLSTMCell(ConvRNNCellBase):
    # based on section 2.1
    def __init__(self,
                 input_channels,
                 hidden_channels,
                 kernel_size=3,
                 stride=1,
                 padding=0,
                 dilation=1,
                 hidden_kernel_size=1,
                 bias=True):
        super(ConvLSTMCell, self).__init__()
        self.input_channels = input_channels
        self.hidden_channels = hidden_channels
 
        self.kernel_size = _pair(kernel_size)
        self.stride = _pair(stride)
        self.padding = _pair(padding)
        self.dilation = _pair(dilation)
 
        self.hidden_kernel_size = _pair(hidden_kernel_size)
 
        hidden_padding = _pair(hidden_kernel_size // 2)
 
        gate_channels = 4 * self.hidden_channels
        self.conv_ih = nn.Conv2d(
            in_channels=self.input_channels,
            out_channels=gate_channels,
            kernel_size=self.kernel_size,
            stride=self.stride,
            padding=self.padding,
            dilation=self.dilation,
            bias=bias)
 
        self.conv_hh = nn.Conv2d(
            in_channels=self.hidden_channels,
            out_channels=gate_channels,
            kernel_size=hidden_kernel_size,
            stride=1,
            padding=hidden_padding,
            dilation=1,
            bias=bias)
 
        self.reset_parameters()
 
    def reset_parameters(self):
        self.conv_ih.reset_parameters()
        self.conv_hh.reset_parameters()
 
    def forward(self, input, hidden):
        # based on equation (4)-(6)
        hx, cx = hidden
        gates = self.conv_ih(input) + self.conv_hh(hx)
 
        ingate, forgetgate, cellgate, outgate = gates.chunk(4, 1)
 
        ingate = F.sigmoid(ingate)
        forgetgate = F.sigmoid(forgetgate)
        cellgate = F.tanh(cellgate)
        outgate = F.sigmoid(outgate)
 
        cy = (forgetgate * cx) + (ingate * cellgate)
        hy = outgate * F.tanh(cy)
 
        return hy, cy

header 3