Comments (7)
@liamsun2019 Hi, thanks for trying out our project. With concern to this issue, I cannot say where the problem is without further information. I think there are several things you could do to help diagnose this problem.
- Check for the device of the parameters at critical code locations
for n, p in qat_model.named_parameters():
assert p.device == device, f"{n} is not on the desired device, but {p.device}"
- Try evaluating once with the
dummy_input
given before passing intotrain
qat_model(dummy_input.to(device=device))
BTW, it would be helpful if you could share your code (e.g. train_one_epoch
, validate
and the other parts of your main script) and the generated model description script.
from tinyneuralnetwork.
Thanks for your tips. I tried the 2 things you mentioned and both ran normally:
- The device of all the named parameters are cuda:0 as expected
- The evaluation looks normal
I attach the main.py and the generated model description script for your reference. As for validate/train_one_epoch, I will prepare them later when needed.
main.py:
def main_quant(opt):
torch.manual_seed(opt.seed)
torch.backends.cudnn.benchmark = not opt.not_cuda_benchmark and not opt.test
Dataset = get_dataset(opt.dataset, opt.task)
opt = opts().update_dataset_info_and_set_heads(opt, Dataset)
print(opt)
logger = Logger(opt)
os.environ['CUDA_VISIBLE_DEVICES'] = opt.gpus_str
opt.device = torch.device('cuda' if opt.gpus[0] >= 0 else 'cpu')
print('Creating model...')
if not opt.froze_backbone:
model = create_model(opt.arch, opt.heads,
opt.head_conv, opt.froze_backbone, opt.ft_size, norm_layer=nn.BatchNorm2d)
else:
model = create_model(opt.arch, opt.heads,
opt.head_conv, opt.froze_backbone, opt.ft_size)
device = get_device()
optimizer = torch.optim.Adam(model.parameters(), opt.lr)
start_epoch = 0
if opt.load_model != '':
model, optimizer, start_epoch = load_model(
model, opt.load_model, optimizer, opt.resume, opt.lr, opt.lr_step)
Trainer = train_factory[opt.task]
trainer = Trainer(opt, model, optimizer)
trainer.set_device(opt.gpus, opt.chunk_sizes, opt.device)
dummy_input = torch.rand((1, 3, opt.input_h, opt.input_w))
context = DLContext()
context.device = device
context.val_loader = torch.utils.data.DataLoader(
Dataset(opt, 'val'),
batch_size=1,
shuffle=False,
num_workers=1,
pin_memory=True
)
context.train_loader = torch.utils.data.DataLoader(
Dataset(opt, 'train'),
batch_size=opt.batch_size,
shuffle=True,
num_workers=opt.num_workers,
pin_memory=True,
drop_last=True
)
print("Start preparing the model for quantization")
quantizer = QATQuantizer(model, dummy_input, work_dir='out')
qat_model = quantizer.quantize()
print("Start quantization-aware training ===>", device)
qat_model.to(device=device)
context = DLContext()
context.device = device
context.val_loader = torch.utils.data.DataLoader(
Dataset(opt, 'val'),
batch_size=1,
shuffle=False,
num_workers=1,
pin_memory=True
)
context.train_loader = torch.utils.data.DataLoader(
Dataset(opt, 'train'),
batch_size=opt.batch_size,
shuffle=True,
num_workers=opt.num_workers,
pin_memory=True,
drop_last=True
)
context.max_epoch = 50
for n, p in qat_model.named_parameters():
assert p.device == device, f"{n} is not on the desired device, but {p.device}"
qat_model(dummy_input.to(device=device))
# Quantization-aware training
train(qat_model, context, trainer.train_one_epoch, trainer.validate, qat=True)
print("Start converting the model to TFLite")
logger.close()
from tinyneuralnetwork.
The generated model description script:
import torch
import torch.nn
import torch.functional
import torch.nn.functional
import torch.quantization
import torch.nn.quantized
class MoveNet_qat(torch.nn.Module):
def init(self):
super().init()
self.fake_quant_0 = torch.quantization.QuantStub()
self.backbone_body_0_0 = torch.nn.ZeroPad2d(padding=(0, 1, 0, 1))
self.backbone_body_0_1 = torch.nn.Conv2d(3, 56, kernel_size=(3, 3), stride=(2, 2))
self.backbone_body_0_2 = torch.nn.ReLU6(inplace=True)
self.backbone_body_1_conv_0_0 = torch.nn.Conv2d(56, 56, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=56)
self.backbone_body_1_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_1_conv_1 = torch.nn.Conv2d(56, 32, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_2_conv_0_0 = torch.nn.Conv2d(32, 192, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_2_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_2_conv_1_0 = torch.nn.ZeroPad2d(padding=(0, 1, 0, 1))
self.backbone_body_2_conv_1_1 = torch.nn.Conv2d(192, 192, kernel_size=(3, 3), stride=(2, 2), groups=192)
self.backbone_body_2_conv_1_2 = torch.nn.ReLU6(inplace=True)
self.backbone_body_2_conv_2 = torch.nn.Conv2d(192, 40, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_3_conv_0_0 = torch.nn.Conv2d(40, 240, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_3_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_3_conv_1_0 = torch.nn.Conv2d(240, 240, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=240)
self.backbone_body_3_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_3_conv_2 = torch.nn.Conv2d(240, 40, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_4_conv_0_0 = torch.nn.Conv2d(40, 240, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_4_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_4_conv_1_0 = torch.nn.ZeroPad2d(padding=(0, 1, 0, 1))
self.backbone_body_4_conv_1_1 = torch.nn.Conv2d(240, 240, kernel_size=(3, 3), stride=(2, 2), groups=240)
self.backbone_body_4_conv_1_2 = torch.nn.ReLU6(inplace=True)
self.backbone_body_4_conv_2 = torch.nn.Conv2d(240, 56, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_5_conv_0_0 = torch.nn.Conv2d(56, 336, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_5_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_5_conv_1_0 = torch.nn.Conv2d(336, 336, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=336)
self.backbone_body_5_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_5_conv_2 = torch.nn.Conv2d(336, 56, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_6_conv_0_0 = torch.nn.Conv2d(56, 336, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_6_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_6_conv_1_0 = torch.nn.Conv2d(336, 336, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=336)
self.backbone_body_6_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_6_conv_2 = torch.nn.Conv2d(336, 56, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_7_conv_0_0 = torch.nn.Conv2d(56, 336, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_7_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_7_conv_1_0 = torch.nn.ZeroPad2d(padding=(0, 1, 0, 1))
self.backbone_body_7_conv_1_1 = torch.nn.Conv2d(336, 336, kernel_size=(3, 3), stride=(2, 2), groups=336)
self.backbone_body_7_conv_1_2 = torch.nn.ReLU6(inplace=True)
self.backbone_body_7_conv_2 = torch.nn.Conv2d(336, 112, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_8_conv_0_0 = torch.nn.Conv2d(112, 672, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_8_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_8_conv_1_0 = torch.nn.Conv2d(672, 672, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=672)
self.backbone_body_8_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_8_conv_2 = torch.nn.Conv2d(672, 112, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_9_conv_0_0 = torch.nn.Conv2d(112, 672, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_9_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_9_conv_1_0 = torch.nn.Conv2d(672, 672, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=672)
self.backbone_body_9_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_9_conv_2 = torch.nn.Conv2d(672, 112, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_10_conv_0_0 = torch.nn.Conv2d(112, 672, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_10_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_10_conv_1_0 = torch.nn.Conv2d(672, 672, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=672)
self.backbone_body_10_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_10_conv_2 = torch.nn.Conv2d(672, 112, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_11_conv_0_0 = torch.nn.Conv2d(112, 672, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_11_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_11_conv_1_0 = torch.nn.Conv2d(672, 672, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=672)
self.backbone_body_11_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_11_conv_2 = torch.nn.Conv2d(672, 168, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_12_conv_0_0 = torch.nn.Conv2d(168, 1008, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_12_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_12_conv_1_0 = torch.nn.Conv2d(1008, 1008, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1008)
self.backbone_body_12_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_12_conv_2 = torch.nn.Conv2d(1008, 168, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_13_conv_0_0 = torch.nn.Conv2d(168, 1008, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_13_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_13_conv_1_0 = torch.nn.Conv2d(1008, 1008, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1008)
self.backbone_body_13_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_13_conv_2 = torch.nn.Conv2d(1008, 168, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_14_conv_0_0 = torch.nn.Conv2d(168, 1008, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_14_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_14_conv_1_0 = torch.nn.ZeroPad2d(padding=(0, 1, 0, 1))
self.backbone_body_14_conv_1_1 = torch.nn.Conv2d(1008, 1008, kernel_size=(3, 3), stride=(2, 2), groups=1008)
self.backbone_body_14_conv_1_2 = torch.nn.ReLU6(inplace=True)
self.backbone_body_14_conv_2 = torch.nn.Conv2d(1008, 280, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_15_conv_0_0 = torch.nn.Conv2d(280, 1680, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_15_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_15_conv_1_0 = torch.nn.Conv2d(1680, 1680, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1680)
self.backbone_body_15_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_15_conv_2 = torch.nn.Conv2d(1680, 280, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_16_conv_0_0 = torch.nn.Conv2d(280, 1680, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_16_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_16_conv_1_0 = torch.nn.Conv2d(1680, 1680, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1680)
self.backbone_body_16_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_16_conv_2 = torch.nn.Conv2d(1680, 280, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_17_conv_0_0 = torch.nn.Conv2d(280, 1680, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_17_conv_0_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_17_conv_1_0 = torch.nn.Conv2d(1680, 1680, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=1680)
self.backbone_body_17_conv_1_1 = torch.nn.ReLU6(inplace=True)
self.backbone_body_17_conv_2 = torch.nn.Conv2d(1680, 560, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_18_0 = torch.nn.Conv2d(560, 1280, kernel_size=(1, 1), stride=(1, 1))
self.backbone_body_18_1 = torch.nn.ReLU6(inplace=True)
self.backbone_fpn_inner_blocks_3 = torch.nn.Conv2d(1280, 64, kernel_size=(1, 1), stride=(1, 1))
self.backbone_fpn_inner_blocks_2 = torch.nn.Conv2d(112, 64, kernel_size=(1, 1), stride=(1, 1))
self.backbone_fpn_layer_blocks_2_conv_0 = torch.nn.Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=64)
self.backbone_fpn_layer_blocks_2_conv_1 = torch.nn.Conv2d(64, 32, kernel_size=(1, 1), stride=(1, 1))
self.backbone_fpn_layer_blocks_2_conv_2 = torch.nn.ReLU(inplace=True)
self.backbone_fpn_inner_blocks_1 = torch.nn.Conv2d(56, 32, kernel_size=(1, 1), stride=(1, 1))
self.backbone_fpn_layer_blocks_1_conv_0 = torch.nn.Conv2d(32, 32, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=32)
self.backbone_fpn_layer_blocks_1_conv_1 = torch.nn.Conv2d(32, 24, kernel_size=(1, 1), stride=(1, 1))
self.backbone_fpn_layer_blocks_1_conv_2 = torch.nn.ReLU(inplace=True)
self.backbone_fpn_inner_blocks_0 = torch.nn.Conv2d(40, 24, kernel_size=(1, 1), stride=(1, 1))
self.backbone_fpn_layer_blocks_0_conv_0 = torch.nn.Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24)
self.backbone_fpn_layer_blocks_0_conv_1 = torch.nn.Conv2d(24, 24, kernel_size=(1, 1), stride=(1, 1))
self.backbone_fpn_layer_blocks_0_conv_2 = torch.nn.ReLU(inplace=True)
self.hm_0 = torch.nn.Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24)
self.hm_1 = torch.nn.Conv2d(24, 96, kernel_size=(1, 1), stride=(1, 1))
self.hm_2 = torch.nn.ReLU(inplace=True)
self.hm_3 = torch.nn.Conv2d(96, 1, kernel_size=(1, 1), stride=(1, 1))
self.hps_0 = torch.nn.Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24)
self.hps_1 = torch.nn.Conv2d(24, 96, kernel_size=(1, 1), stride=(1, 1))
self.hps_2 = torch.nn.ReLU(inplace=True)
self.hps_3 = torch.nn.Conv2d(96, 34, kernel_size=(1, 1), stride=(1, 1))
self.hm_hp_0 = torch.nn.Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24)
self.hm_hp_1 = torch.nn.Conv2d(24, 96, kernel_size=(1, 1), stride=(1, 1))
self.hm_hp_2 = torch.nn.ReLU(inplace=True)
self.hm_hp_3 = torch.nn.Conv2d(96, 17, kernel_size=(1, 1), stride=(1, 1))
self.hp_offset_0 = torch.nn.Conv2d(24, 24, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), groups=24)
self.hp_offset_1 = torch.nn.Conv2d(24, 96, kernel_size=(1, 1), stride=(1, 1))
self.hp_offset_2 = torch.nn.ReLU(inplace=True)
self.hp_offset_3 = torch.nn.Conv2d(96, 34, kernel_size=(1, 1), stride=(1, 1))
self.fake_dequant_0 = torch.quantization.DeQuantStub()
self.fake_dequant_1 = torch.quantization.DeQuantStub()
self.fake_dequant_2 = torch.quantization.DeQuantStub()
self.fake_dequant_3 = torch.quantization.DeQuantStub()
self.float_functional_simple_0 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_1 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_2 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_3 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_4 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_5 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_6 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_7 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_8 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_9 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_10 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_11 = torch.nn.quantized.FloatFunctional()
self.float_functional_simple_12 = torch.nn.quantized.FloatFunctional()
def forward(self, input_1):
fake_quant_0 = self.fake_quant_0(input_1)
backbone_body_0_0 = self.backbone_body_0_0(fake_quant_0)
backbone_body_0_1 = self.backbone_body_0_1(backbone_body_0_0)
backbone_body_0_2 = self.backbone_body_0_2(backbone_body_0_1)
backbone_body_1_conv_0_0 = self.backbone_body_1_conv_0_0(backbone_body_0_2)
backbone_body_1_conv_0_1 = self.backbone_body_1_conv_0_1(backbone_body_1_conv_0_0)
backbone_body_1_conv_1 = self.backbone_body_1_conv_1(backbone_body_1_conv_0_1)
backbone_body_2_conv_0_0 = self.backbone_body_2_conv_0_0(backbone_body_1_conv_1)
backbone_body_2_conv_0_1 = self.backbone_body_2_conv_0_1(backbone_body_2_conv_0_0)
backbone_body_2_conv_1_0 = self.backbone_body_2_conv_1_0(backbone_body_2_conv_0_1)
backbone_body_2_conv_1_1 = self.backbone_body_2_conv_1_1(backbone_body_2_conv_1_0)
backbone_body_2_conv_1_2 = self.backbone_body_2_conv_1_2(backbone_body_2_conv_1_1)
backbone_body_2_conv_2 = self.backbone_body_2_conv_2(backbone_body_2_conv_1_2)
backbone_body_3_conv_0_0 = self.backbone_body_3_conv_0_0(backbone_body_2_conv_2)
backbone_body_3_conv_0_1 = self.backbone_body_3_conv_0_1(backbone_body_3_conv_0_0)
backbone_body_3_conv_1_0 = self.backbone_body_3_conv_1_0(backbone_body_3_conv_0_1)
backbone_body_3_conv_1_1 = self.backbone_body_3_conv_1_1(backbone_body_3_conv_1_0)
backbone_body_3_conv_2 = self.backbone_body_3_conv_2(backbone_body_3_conv_1_1)
add_1 = self.float_functional_simple_0.add(backbone_body_2_conv_2, backbone_body_3_conv_2)
backbone_body_4_conv_0_0 = self.backbone_body_4_conv_0_0(add_1)
backbone_body_4_conv_0_1 = self.backbone_body_4_conv_0_1(backbone_body_4_conv_0_0)
backbone_body_4_conv_1_0 = self.backbone_body_4_conv_1_0(backbone_body_4_conv_0_1)
backbone_body_4_conv_1_1 = self.backbone_body_4_conv_1_1(backbone_body_4_conv_1_0)
backbone_body_4_conv_1_2 = self.backbone_body_4_conv_1_2(backbone_body_4_conv_1_1)
backbone_body_4_conv_2 = self.backbone_body_4_conv_2(backbone_body_4_conv_1_2)
backbone_body_5_conv_0_0 = self.backbone_body_5_conv_0_0(backbone_body_4_conv_2)
backbone_body_5_conv_0_1 = self.backbone_body_5_conv_0_1(backbone_body_5_conv_0_0)
backbone_body_5_conv_1_0 = self.backbone_body_5_conv_1_0(backbone_body_5_conv_0_1)
backbone_body_5_conv_1_1 = self.backbone_body_5_conv_1_1(backbone_body_5_conv_1_0)
backbone_body_5_conv_2 = self.backbone_body_5_conv_2(backbone_body_5_conv_1_1)
add_2 = self.float_functional_simple_1.add(backbone_body_4_conv_2, backbone_body_5_conv_2)
backbone_body_6_conv_0_0 = self.backbone_body_6_conv_0_0(add_2)
backbone_body_6_conv_0_1 = self.backbone_body_6_conv_0_1(backbone_body_6_conv_0_0)
backbone_body_6_conv_1_0 = self.backbone_body_6_conv_1_0(backbone_body_6_conv_0_1)
backbone_body_6_conv_1_1 = self.backbone_body_6_conv_1_1(backbone_body_6_conv_1_0)
backbone_body_6_conv_2 = self.backbone_body_6_conv_2(backbone_body_6_conv_1_1)
add_3 = self.float_functional_simple_2.add(add_2, backbone_body_6_conv_2)
backbone_body_7_conv_0_0 = self.backbone_body_7_conv_0_0(add_3)
backbone_body_7_conv_0_1 = self.backbone_body_7_conv_0_1(backbone_body_7_conv_0_0)
backbone_body_7_conv_1_0 = self.backbone_body_7_conv_1_0(backbone_body_7_conv_0_1)
backbone_body_7_conv_1_1 = self.backbone_body_7_conv_1_1(backbone_body_7_conv_1_0)
backbone_body_7_conv_1_2 = self.backbone_body_7_conv_1_2(backbone_body_7_conv_1_1)
backbone_body_7_conv_2 = self.backbone_body_7_conv_2(backbone_body_7_conv_1_2)
backbone_body_8_conv_0_0 = self.backbone_body_8_conv_0_0(backbone_body_7_conv_2)
backbone_body_8_conv_0_1 = self.backbone_body_8_conv_0_1(backbone_body_8_conv_0_0)
backbone_body_8_conv_1_0 = self.backbone_body_8_conv_1_0(backbone_body_8_conv_0_1)
backbone_body_8_conv_1_1 = self.backbone_body_8_conv_1_1(backbone_body_8_conv_1_0)
backbone_body_8_conv_2 = self.backbone_body_8_conv_2(backbone_body_8_conv_1_1)
add_4 = self.float_functional_simple_3.add(backbone_body_7_conv_2, backbone_body_8_conv_2)
backbone_body_9_conv_0_0 = self.backbone_body_9_conv_0_0(add_4)
backbone_body_9_conv_0_1 = self.backbone_body_9_conv_0_1(backbone_body_9_conv_0_0)
backbone_body_9_conv_1_0 = self.backbone_body_9_conv_1_0(backbone_body_9_conv_0_1)
backbone_body_9_conv_1_1 = self.backbone_body_9_conv_1_1(backbone_body_9_conv_1_0)
backbone_body_9_conv_2 = self.backbone_body_9_conv_2(backbone_body_9_conv_1_1)
add_5 = self.float_functional_simple_4.add(add_4, backbone_body_9_conv_2)
backbone_body_10_conv_0_0 = self.backbone_body_10_conv_0_0(add_5)
backbone_body_10_conv_0_1 = self.backbone_body_10_conv_0_1(backbone_body_10_conv_0_0)
backbone_body_10_conv_1_0 = self.backbone_body_10_conv_1_0(backbone_body_10_conv_0_1)
backbone_body_10_conv_1_1 = self.backbone_body_10_conv_1_1(backbone_body_10_conv_1_0)
backbone_body_10_conv_2 = self.backbone_body_10_conv_2(backbone_body_10_conv_1_1)
add_6 = self.float_functional_simple_5.add(add_5, backbone_body_10_conv_2)
backbone_body_11_conv_0_0 = self.backbone_body_11_conv_0_0(add_6)
backbone_body_11_conv_0_1 = self.backbone_body_11_conv_0_1(backbone_body_11_conv_0_0)
backbone_body_11_conv_1_0 = self.backbone_body_11_conv_1_0(backbone_body_11_conv_0_1)
backbone_body_11_conv_1_1 = self.backbone_body_11_conv_1_1(backbone_body_11_conv_1_0)
backbone_body_11_conv_2 = self.backbone_body_11_conv_2(backbone_body_11_conv_1_1)
backbone_body_12_conv_0_0 = self.backbone_body_12_conv_0_0(backbone_body_11_conv_2)
backbone_body_12_conv_0_1 = self.backbone_body_12_conv_0_1(backbone_body_12_conv_0_0)
backbone_body_12_conv_1_0 = self.backbone_body_12_conv_1_0(backbone_body_12_conv_0_1)
backbone_body_12_conv_1_1 = self.backbone_body_12_conv_1_1(backbone_body_12_conv_1_0)
backbone_body_12_conv_2 = self.backbone_body_12_conv_2(backbone_body_12_conv_1_1)
add_7 = self.float_functional_simple_6.add(backbone_body_11_conv_2, backbone_body_12_conv_2)
backbone_body_13_conv_0_0 = self.backbone_body_13_conv_0_0(add_7)
backbone_body_13_conv_0_1 = self.backbone_body_13_conv_0_1(backbone_body_13_conv_0_0)
backbone_body_13_conv_1_0 = self.backbone_body_13_conv_1_0(backbone_body_13_conv_0_1)
backbone_body_13_conv_1_1 = self.backbone_body_13_conv_1_1(backbone_body_13_conv_1_0)
backbone_body_13_conv_2 = self.backbone_body_13_conv_2(backbone_body_13_conv_1_1)
add_8 = self.float_functional_simple_7.add(add_7, backbone_body_13_conv_2)
backbone_body_14_conv_0_0 = self.backbone_body_14_conv_0_0(add_8)
backbone_body_14_conv_0_1 = self.backbone_body_14_conv_0_1(backbone_body_14_conv_0_0)
backbone_body_14_conv_1_0 = self.backbone_body_14_conv_1_0(backbone_body_14_conv_0_1)
backbone_body_14_conv_1_1 = self.backbone_body_14_conv_1_1(backbone_body_14_conv_1_0)
backbone_body_14_conv_1_2 = self.backbone_body_14_conv_1_2(backbone_body_14_conv_1_1)
backbone_body_14_conv_2 = self.backbone_body_14_conv_2(backbone_body_14_conv_1_2)
backbone_body_15_conv_0_0 = self.backbone_body_15_conv_0_0(backbone_body_14_conv_2)
backbone_body_15_conv_0_1 = self.backbone_body_15_conv_0_1(backbone_body_15_conv_0_0)
backbone_body_15_conv_1_0 = self.backbone_body_15_conv_1_0(backbone_body_15_conv_0_1)
backbone_body_15_conv_1_1 = self.backbone_body_15_conv_1_1(backbone_body_15_conv_1_0)
backbone_body_15_conv_2 = self.backbone_body_15_conv_2(backbone_body_15_conv_1_1)
add_9 = self.float_functional_simple_8.add(backbone_body_14_conv_2, backbone_body_15_conv_2)
backbone_body_16_conv_0_0 = self.backbone_body_16_conv_0_0(add_9)
backbone_body_16_conv_0_1 = self.backbone_body_16_conv_0_1(backbone_body_16_conv_0_0)
backbone_body_16_conv_1_0 = self.backbone_body_16_conv_1_0(backbone_body_16_conv_0_1)
backbone_body_16_conv_1_1 = self.backbone_body_16_conv_1_1(backbone_body_16_conv_1_0)
backbone_body_16_conv_2 = self.backbone_body_16_conv_2(backbone_body_16_conv_1_1)
add_10 = self.float_functional_simple_9.add(add_9, backbone_body_16_conv_2)
backbone_body_17_conv_0_0 = self.backbone_body_17_conv_0_0(add_10)
backbone_body_17_conv_0_1 = self.backbone_body_17_conv_0_1(backbone_body_17_conv_0_0)
backbone_body_17_conv_1_0 = self.backbone_body_17_conv_1_0(backbone_body_17_conv_0_1)
backbone_body_17_conv_1_1 = self.backbone_body_17_conv_1_1(backbone_body_17_conv_1_0)
backbone_body_17_conv_2 = self.backbone_body_17_conv_2(backbone_body_17_conv_1_1)
backbone_body_18_0 = self.backbone_body_18_0(backbone_body_17_conv_2)
backbone_body_18_1 = self.backbone_body_18_1(backbone_body_18_0)
backbone_fpn_inner_blocks_3 = self.backbone_fpn_inner_blocks_3(backbone_body_18_1)
backbone_fpn_inner_blocks_2 = self.backbone_fpn_inner_blocks_2(add_6)
interpolate_1 = torch.nn.functional.interpolate(backbone_fpn_inner_blocks_3, scale_factor=2, mode='bilinear', align_corners=False)
add_11 = self.float_functional_simple_10.add(backbone_fpn_inner_blocks_2, interpolate_1)
backbone_fpn_layer_blocks_2_conv_0 = self.backbone_fpn_layer_blocks_2_conv_0(add_11)
backbone_fpn_layer_blocks_2_conv_1 = self.backbone_fpn_layer_blocks_2_conv_1(backbone_fpn_layer_blocks_2_conv_0)
backbone_fpn_layer_blocks_2_conv_2 = self.backbone_fpn_layer_blocks_2_conv_2(backbone_fpn_layer_blocks_2_conv_1)
backbone_fpn_inner_blocks_1 = self.backbone_fpn_inner_blocks_1(add_3)
interpolate_2 = torch.nn.functional.interpolate(backbone_fpn_layer_blocks_2_conv_2, scale_factor=2, mode='bilinear', align_corners=False)
add_12 = self.float_functional_simple_11.add(backbone_fpn_inner_blocks_1, interpolate_2)
backbone_fpn_layer_blocks_1_conv_0 = self.backbone_fpn_layer_blocks_1_conv_0(add_12)
backbone_fpn_layer_blocks_1_conv_1 = self.backbone_fpn_layer_blocks_1_conv_1(backbone_fpn_layer_blocks_1_conv_0)
backbone_fpn_layer_blocks_1_conv_2 = self.backbone_fpn_layer_blocks_1_conv_2(backbone_fpn_layer_blocks_1_conv_1)
backbone_fpn_inner_blocks_0 = self.backbone_fpn_inner_blocks_0(add_1)
interpolate_3 = torch.nn.functional.interpolate(backbone_fpn_layer_blocks_1_conv_2, scale_factor=2, mode='bilinear', align_corners=False)
add_13 = self.float_functional_simple_12.add(backbone_fpn_inner_blocks_0, interpolate_3)
backbone_fpn_layer_blocks_0_conv_0 = self.backbone_fpn_layer_blocks_0_conv_0(add_13)
backbone_fpn_layer_blocks_0_conv_1 = self.backbone_fpn_layer_blocks_0_conv_1(backbone_fpn_layer_blocks_0_conv_0)
backbone_fpn_layer_blocks_0_conv_2 = self.backbone_fpn_layer_blocks_0_conv_2(backbone_fpn_layer_blocks_0_conv_1)
hm_0 = self.hm_0(backbone_fpn_layer_blocks_0_conv_2)
hm_1 = self.hm_1(hm_0)
hm_2 = self.hm_2(hm_1)
hm_3 = self.hm_3(hm_2)
hps_0 = self.hps_0(backbone_fpn_layer_blocks_0_conv_2)
hps_1 = self.hps_1(hps_0)
hps_2 = self.hps_2(hps_1)
hps_3 = self.hps_3(hps_2)
hm_hp_0 = self.hm_hp_0(backbone_fpn_layer_blocks_0_conv_2)
hm_hp_1 = self.hm_hp_1(hm_hp_0)
hm_hp_2 = self.hm_hp_2(hm_hp_1)
hm_hp_3 = self.hm_hp_3(hm_hp_2)
hp_offset_0 = self.hp_offset_0(backbone_fpn_layer_blocks_0_conv_2)
hp_offset_1 = self.hp_offset_1(hp_offset_0)
hp_offset_2 = self.hp_offset_2(hp_offset_1)
hp_offset_3 = self.hp_offset_3(hp_offset_2)
fake_dequant_0 = self.fake_dequant_0(hm_3)
fake_dequant_1 = self.fake_dequant_1(hps_3)
fake_dequant_2 = self.fake_dequant_2(hm_hp_3)
fake_dequant_3 = self.fake_dequant_3(hp_offset_3)
return fake_dequant_0, fake_dequant_1, fake_dequant_2, fake_dequant_3
if name == "main":
model = MoveNet_qat()
model.load_state_dict(torch.load('out/movenet_qat.pth'))
model.eval()
model.cpu()
dummy_input_0 = torch.ones((1, 3, 256, 256), dtype=torch.float32)
output = model(dummy_input_0)
print(output)
from tinyneuralnetwork.
from tinyneuralnetwork.
Thanks for sharing those files with us. But unfortunately, I still cannot reproduce that error locally.
- The device of all the named parameters are cuda:0 as expected
What about adding the check somewhere in the body of the function trainer.train_one_epoch
and trainer.validate
. As you can see here,
the train
function is simply defers the the model to the train_func
and validate_func
directly, which means that the model won't be modified by our code.
from tinyneuralnetwork.
I find out the root cause now. I need to set explicitly to cuda in train_one_epoch. The run time error disappears after the fix. Thanks for your generous help.
from tinyneuralnetwork.
I'm glad you get it fixed.
from tinyneuralnetwork.
Related Issues (20)
- Meet Detailed error: Tensor-likes are not close! using TFLiteConverter HOT 2
- [Converter] Need transpose optimization HOT 2
- Float model failed to convert to TFLite
- [converter] map gather(+reshape) ops with seperate consecutive indices to split(unpack) ops
- tinynn.converter module not found! HOT 2
- [CI] several tests for modifier failed
- Whether to support pytorch to keras HOT 1
- TransposeConv wrong shape? HOT 15
- change input to INT8 after converting to tflite HOT 2
- [converter] implement torch's `aten::scaled_dot_product_attention` operator HOT 2
- Request: clamp would be more efficient to go to Bounded Relu than Maximum + Minimum HOT 3
- Do not support PReLU module? HOT 5
- torch.max not working HOT 2
- OneShotChannelPruner results in the miss of some operators HOT 4
- KeyError when executing quantization HOT 5
- PyTorch 转 TFLite 使用 int8 量化 HOT 4
- Does tinynn support following int16 quantization? HOT 1
- jit.trace succeed but tinynn tracer failed HOT 1
- It became larger after converting to tflite model HOT 4
- how to do Post-training integer quantization with int16 activation HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tinyneuralnetwork.