Skip to content

Translating Torch model to other framework such as Caffe, MxNet ...

License

Notifications You must be signed in to change notification settings

ChunyanZhao/trans-torch

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

trans-torch

Translating Torch model to other framework such as Caffe, MxNet ...

Torch is excelent learning&research platform for deep learning, but its model can't be easy deployed without Luajit host. This tool is a simple solution to this problem, translating Torch model to other easy deployed platform such as Caffe or Mxnet.

Directly translating Torch to Caffe (or others) is hard , we must convert Torch code to another DSL (like Caffe's prototxt) or python code(like Mxnet, Tensorflow) But translating parameters ( weights and bias) only between diffrent frmamework is an easy task. For most models in zoo, we need only translating follow modules or layers:

  • Linear module's weight and bias
  • Convolution module's weight and bias
  • BatchNormlaization's mean and var , also including alpha and beta .

1. Translating to Caffe

building

CAFFE_DIR=/home/path_to/caffe luarocks make

how to use this module

require('nn')
require('transtorch')

torch.setdefaulttensortype('torch.FloatTensor')

local net = nn.Sequential()
net:add(nn.Linear(2, 6))
net:add(nn.ReLU())
net:add(nn.Linear(6, 3))
net:add(nn.SoftMax())

local x = torch.ones(2) * 0.5
y = net:forward(x)

print(y)

local caffeNet = transTorch.loadCaffe('./mlp.prototxt');

local l = net:get(1)
transTorch.toCaffe(l, caffeNet, "ip1")
l = net:get(3)
transTorch.toCaffe(l, caffeNet, "ip2")

transTorch.writeCaffe(caffeNet, "mlp.caffemodel")

The Caffe's module will work same as the model build by Torch. We can verify model by simple_test.cpp in test floder. See more demo code in test floder.

2. Translating to MxNet (TODO)

About

Translating Torch model to other framework such as Caffe, MxNet ...

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 42.8%
  • C++ 33.7%
  • Python 17.5%
  • CMake 6.0%