예제 #1
0
def submanifold_single_conv(inchan, outchan):
    dtype = 'torch.cuda.FloatTensor'
    model = scn.Sequential()
    model.add(scn.ValidConvolution(2, inchan, outchan, 3, False))
    model.type(dtype)
    model.cuda()
    return model
예제 #2
0
def submanifold_resnet_block(inout_chan, bottleneck_chan):
    # relu is fused in this implementation
    dtype = 'torch.cuda.FloatTensor'

    bn1 = scn.BatchNormReLU(inout_chan)
    bn2 = scn.BatchNormReLU(bottleneck_chan)
    bn3 = scn.BatchNormReLU(bottleneck_chan)
    bn1.train = False
    bn2.train = False
    bn3.train = False
    model = scn.Sequential() \
        .add(bn1) \
        .add(scn.ValidConvolution(2, inout_chan, bottleneck_chan, 3, False)) \
        .add(bn2) \
        .add(scn.ValidConvolution(2, bottleneck_chan, bottleneck_chan, 3, False)) \
        .add(bn3) \
        .add(scn.ValidConvolution(2, bottleneck_chan, inout_chan, 3, False))
    model.type(dtype)
    model.cuda()

    return model
예제 #3
0
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

import torch
import torch.legacy.nn as nn
import sparseconvnet.legacy as scn
from data import getIterators

# Use the GPU if there is one, otherwise CPU
dtype = 'torch.cuda.FloatTensor' if torch.cuda.is_available(
) else 'torch.FloatTensor'

# two-dimensional SparseConvNet
model = nn.Sequential()
sparseModel = scn.Sequential()
denseModel = nn.Sequential()
model.add(sparseModel).add(denseModel)
sparseModel.add(scn.ValidConvolution(2, 3, 16, 3, False))
sparseModel.add(scn.MaxPooling(2, 3, 2))
sparseModel.add(
    scn.SparseResNet(
        2, 16,
        [['b', 16, 2, 1], ['b', 32, 2, 2], ['b', 48, 2, 2], ['b', 96, 2, 2]]))
sparseModel.add(scn.Convolution(2, 96, 128, 4, 1, False))
sparseModel.add(scn.BatchNormReLU(128))
sparseModel.add(scn.SparseToDense(2))
denseModel.add(nn.View(-1, 128))
denseModel.add(nn.Linear(128, 3755))
model.type(dtype)
print(model)
예제 #4
0
#
# This source code is licensed under the license found in the
# LICENSE file in the root directory of this source tree.

import torch
import torch.legacy.nn as nn
import sparseconvnet.legacy as scn

# Use the GPU if there is one, otherwise CPU
dtype = 'torch.cuda.FloatTensor' if torch.cuda.is_available(
) else 'torch.FloatTensor'

model = scn.Sequential().add(
    scn.SparseVggNet(2, 1,
                     [['C', 8], ['C', 8], ['MP', 3, 2], ['C', 16], ['C', 16],
                      ['MP', 3, 2], ['C', 24], ['C', 24], ['MP', 3, 2]])).add(
                          scn.ValidConvolution(2, 24, 32, 3, False)).add(
                              scn.BatchNormReLU(32)).add(
                                  scn.SparseToDense(2)).type(dtype)

# output will be 10x10
inputSpatialSize = model.suggestInputSize(torch.LongTensor([10, 10]))
input = scn.InputBatch(2, inputSpatialSize)

msg = [
    " X   X  XXX  X    X    XX     X       X   XX   XXX   X    XXX   ",
    " X   X  X    X    X   X  X    X       X  X  X  X  X  X    X  X  ",
    " XXXXX  XX   X    X   X  X    X   X   X  X  X  XXX   X    X   X ",
    " X   X  X    X    X   X  X     X X X X   X  X  X  X  X    X  X  ",
    " X   X  XXX  XXX  XXX  XX       X   X     XX   X  X  XXX  XXX   "
]