Skip to content

Instantly share code, notes, and snippets.

@lanpa
Last active February 15, 2018 03:45
Show Gist options
  • Save lanpa/debcb8b8d5e674f176817b929f1747ea to your computer and use it in GitHub Desktop.
Save lanpa/debcb8b8d5e674f176817b929f1747ea to your computer and use it in GitHub Desktop.
pytorch 0.4.0a0+fe810ed trace
class Net1(nn.Module):
def __init__(self):
super(Net1, self).__init__()
self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
self.conv2_drop = nn.Dropout2d()
self.fc1 = nn.Linear(320, 50)
self.fc2 = nn.Linear(50, 10)
self.bn = nn.BatchNorm2d(20)
def forward(self, x):
x = F.max_pool2d(self.conv1(x), 2)
x = F.relu(x) + F.relu(-x)
x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
x = self.bn(x)
x = x.view(-1, 320)
x = F.relu(self.fc1(x))
x = F.dropout(x, training=self.training)
x = self.fc2(x)
x = F.softmax(x, dim=1)
return x
graph(%0 : Float(13, 1, 28, 28)
%1 : Float(10, 1, 5, 5)
%2 : Float(10)
%3 : Float(20, 10, 5, 5)
%4 : Float(20)
%5 : Float(50, 320)
%6 : Float(50)
%7 : Float(10, 50)
%8 : Float(10)
%9 : Float(20)
%10 : Float(20)
%11 : Float(20)
%12 : Float(20)) {
%18 : Float(13, 10, 24, 24) = _convolution[stride=[1, 1], padding=[0, 0], dilation=[1, 1], transposed=0, output_padding=[0, 0], groups=1, benchmark=0, deterministic=0, cudnn_enabled=1](%0, %1, %2), scope: Net1/Conv2d[conv1]
%17 : Float(13, 10, 24, 24) = _convolution_nogroup[stride=[1, 1], padding=[0, 0], dilation=[1, 1], transposed=0, output_padding=[0, 0]](%0, %1, %2), scope: Net1/Conv2d[conv1]
%16 : Float(13, 10, 24, 24) = thnn_conv2d[kernel_size=[5, 5], stride=[1, 1], padding=[0, 0]](%0, %1, %2), scope: Net1/Conv2d[conv1]
%13 : Float(13, 10, 24, 24), %14 : Float(13, 25, 576), %15 : Float(0) = thnn_conv2d_forward[kernel_size=[5, 5], stride=[1, 1], padding=[0, 0]](%0, %1, %2), scope: Net1/Conv2d[conv1]
%21 : Float(13, 10, 12, 12), %22 : Long(13, 10, 12, 12) = max_pool2d[kernel_size=[2, 2], stride=[], padding=[0, 0], dilation=[1, 1], ceil_mode=0](%18), scope: Net1
%19 : Float(13, 10, 12, 12), %20 : Long(13, 10, 12, 12) = max_pool2d_forward[kernel_size=[2, 2], stride=[], padding=[0, 0], dilation=[1, 1], ceil_mode=0](%18), scope: Net1
%24 : Float(13, 10, 12, 12) = threshold[threshold={0}, value={0}](%21), scope: Net1
%23 : Float(13, 10, 12, 12) = threshold_forward[threshold={0}, value={0}](%21), scope: Net1
%25 : Float(13, 10, 12, 12) = neg(%21), scope: Net1
%27 : Float(13, 10, 12, 12) = threshold[threshold={0}, value={0}](%25), scope: Net1
%26 : Float(13, 10, 12, 12) = threshold_forward[threshold={0}, value={0}](%25), scope: Net1
%28 : Float(13, 10, 12, 12) = add[alpha={1}](%24, %27), scope: Net1
%34 : Float(13, 20, 8, 8) = _convolution[stride=[1, 1], padding=[0, 0], dilation=[1, 1], transposed=0, output_padding=[0, 0], groups=1, benchmark=0, deterministic=0, cudnn_enabled=1](%28, %3, %4), scope: Net1/Conv2d[conv2]
%33 : Float(13, 20, 8, 8) = _convolution_nogroup[stride=[1, 1], padding=[0, 0], dilation=[1, 1], transposed=0, output_padding=[0, 0]](%28, %3, %4), scope: Net1/Conv2d[conv2]
%32 : Float(13, 20, 8, 8) = thnn_conv2d[kernel_size=[5, 5], stride=[1, 1], padding=[0, 0]](%28, %3, %4), scope: Net1/Conv2d[conv2]
%29 : Float(13, 20, 8, 8), %30 : Float(13, 250, 64), %31 : Float(0) = thnn_conv2d_forward[kernel_size=[5, 5], stride=[1, 1], padding=[0, 0]](%28, %3, %4), scope: Net1/Conv2d[conv2]
%37 : Float(13, 20, 8, 8), %38 : Handle = ^FeatureDropout(0.5, False, False)(%34), scope: Net1/Dropout2d[conv2_drop]
%36 : Float(13, 20, 8, 8) = slice[dim=0, start=0, end=9223372036854775807, step=1](%34), scope: Net1/Dropout2d[conv2_drop]
%35 : Float(13, 20, 8, 8) = as_strided[size=[13, 20, 8, 8], stride=[1280, 64, 8, 1], storage_offset=0](%34), scope: Net1/Dropout2d[conv2_drop]
%41 : Float(13, 20, 4, 4), %42 : Long(13, 20, 4, 4) = max_pool2d[kernel_size=[2, 2], stride=[], padding=[0, 0], dilation=[1, 1], ceil_mode=0](%37), scope: Net1
%39 : Float(13, 20, 4, 4), %40 : Long(13, 20, 4, 4) = max_pool2d_forward[kernel_size=[2, 2], stride=[], padding=[0, 0], dilation=[1, 1], ceil_mode=0](%37), scope: Net1
%44 : Float(13, 20, 4, 4) = threshold[threshold={0}, value={0}](%41), scope: Net1
%43 : Float(13, 20, 4, 4) = threshold_forward[threshold={0}, value={0}](%41), scope: Net1
%49 : Float(13, 20, 4, 4) = batch_norm[training=0, momentum=0.1, eps=1e-05, cudnn_enabled=1](%44, %9, %10, %11, %12), scope: Net1/BatchNorm2d[bn]
%48 : Float(13, 20, 4, 4) = thnn_batch_norm[training=0, momentum=0.1, eps=1e-05](%44, %9, %10, %11, %12), scope: Net1/BatchNorm2d[bn]
%45 : Float(13, 20, 4, 4), %46 : Float(0), %47 : Float(0) = thnn_batch_norm_forward[training=0, momentum=0.1, eps=1e-05](%44, %9, %10, %11, %12), scope: Net1/BatchNorm2d[bn]
%50 : Float(13, 320) = view[size=[-1, 320]](%49), scope: Net1
%51 : Float(320!, 50!) = t(%5), scope: Net1/Linear[fc1]
%52 : Float(13!, 50) = expand[size=[13, 50]](%6), scope: Net1/Linear[fc1]
%53 : Float(13, 50) = addmm[beta={1}, alpha={1}](%52, %50, %51), scope: Net1/Linear[fc1]
%55 : Float(13, 50) = threshold[threshold={0}, value={0}](%53), scope: Net1
%54 : Float(13, 50) = threshold_forward[threshold={0}, value={0}](%53), scope: Net1
%58 : Float(13, 50), %59 : Handle = ^Dropout(0.5, False, False)(%55), scope: Net1
%57 : Float(13, 50) = slice[dim=0, start=0, end=9223372036854775807, step=1](%55), scope: Net1
%56 : Float(13, 50) = as_strided[size=[13, 50], stride=[50, 1], storage_offset=0](%55), scope: Net1
%60 : Float(50!, 10!) = t(%7), scope: Net1/Linear[fc2]
%61 : Float(13!, 10) = expand[size=[13, 10]](%8), scope: Net1/Linear[fc2]
%62 : Float(13, 10) = addmm[beta={1}, alpha={1}](%61, %58, %60), scope: Net1/Linear[fc2]
%64 : Float(13, 10) = softmax[dim=1](%62), scope: Net1
%63 : Float(13, 10) = softmax_forward[dim=1](%62), scope: Net1
return (%64);
}
==after optimize==
graph(%0 : Float(13, 1, 28, 28)
%1 : Float(10, 1, 5, 5)
%2 : Float(10)
%3 : Float(20, 10, 5, 5)
%4 : Float(20)
%5 : Float(50, 320)
%6 : Float(50)
%7 : Float(10, 50)
%8 : Float(10)
%9 : Float(20)
%10 : Float(20)
%11 : Float(20)
%12 : Float(20)) {
%13 : Float(13, 10, 24, 24) = Conv[dilations=[1, 1], group=1, kernel_shape=[5, 5], pads=[0, 0, 0, 0], strides=[1, 1]](%0, %1, %2), scope: Net1/Conv2d[conv1]
%14 : Float(13, 10, 12, 12) = MaxPool[kernel_shape=[2, 2], pads=[0, 0, 0, 0], strides=[2, 2]](%13), scope: Net1
%15 : Float(13, 10, 12, 12) = Relu(%14), scope: Net1
%16 : Float(13, 10, 12, 12) = Neg(%14), scope: Net1
%17 : Float(13, 10, 12, 12) = Relu(%16), scope: Net1
%18 : Float(13, 10, 12, 12) = Add(%15, %17), scope: Net1
%19 : Float(13, 20, 8, 8) = Conv[dilations=[1, 1], group=1, kernel_shape=[5, 5], pads=[0, 0, 0, 0], strides=[1, 1]](%18, %3, %4), scope: Net1/Conv2d[conv2]
%20 : Float(13, 20, 4, 4) = MaxPool[kernel_shape=[2, 2], pads=[0, 0, 0, 0], strides=[2, 2]](%19), scope: Net1
%21 : Float(13, 20, 4, 4) = Relu(%20), scope: Net1
%22 : Float(13, 20, 4, 4) = BatchNormalization[consumed_inputs=[0, 0, 0, 1, 1], epsilon=1e-05, is_test=1, momentum=0.9](%21, %9, %10, %11, %12), scope: Net1/BatchNorm2d[bn]
%23 : Float(13, 320) = Reshape[shape=[-1, 320]](%22), scope: Net1
%24 : Float(13, 50) = Gemm[alpha=1, beta=1, broadcast=1, transB=1](%23, %5, %6), scope: Net1/Linear[fc1]
%25 : Float(13, 50) = Relu(%24), scope: Net1
%26 : Float(13, 50), %27 : UNKNOWN_TYPE = Dropout[is_test=1, ratio=0.5](%25), scope: Net1
%28 : Float(13, 10) = Gemm[alpha=1, beta=1, broadcast=1, transB=1](%26, %7, %8), scope: Net1/Linear[fc2]
%29 : Float(13, 10) = Softmax[axis=1](%28), scope: Net1
return (%29);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment