@@ -15,10 +15,19 @@ auto interpolate_registrations = RegisterNodeConversionPatterns()
15
15
.pattern({
16
16
" aten::upsample_nearest1d(Tensor self, int[1] output_size, float? scales=None) -> (Tensor)" ,
17
17
[](ConversionCtx* ctx, const torch::jit::Node*n, args& args) -> bool {
18
- std::cout << " GOT IN HERE!!!!!!" << std::endl;
19
-
20
18
auto in = args[0 ].ITensor ();
21
19
auto in_shape = util::toVec (in->getDimensions ());
20
+
21
+ // remove padding that TensorRt adds automatically
22
+ if (in_shape.size () >= 4 ) {
23
+ // remove first dimension
24
+ in_shape.erase (in_shape.begin ());
25
+
26
+ auto shuffle = ctx->net ->addShuffle (*in);
27
+ shuffle->setReshapeDimensions (util::toDims (in_shape));
28
+ shuffle->setName ( (util::node_info (n) + " [Reshape to " + util::toStr (util::toDims (in_shape)) + " ]" ).c_str () );
29
+ in = shuffle->getOutput (0 );
30
+ }
22
31
23
32
// Case 1: user uses output size and not scales
24
33
if (!args[1 ].IValue ()->isNone () && args[2 ].IValue ()->isNone ()) {
@@ -28,9 +37,6 @@ auto interpolate_registrations = RegisterNodeConversionPatterns()
28
37
29
38
auto out_shape = in_shape;
30
39
std::copy (out_size.begin (), out_size.end (), out_shape.begin () + (in_shape.size () - out_size.size ()));
31
-
32
- // remove padding that TensorRT adds automatically
33
- // out_shape.erase(out_shape.begin(), out_shape.begin()+1);
34
40
35
41
auto resize_layer = ctx->net ->addResize (*in);
36
42
TRTORCH_CHECK (resize_layer, " Unable to create interpolation (resizing) layer from node" << *n);
@@ -39,8 +45,30 @@ auto interpolate_registrations = RegisterNodeConversionPatterns()
39
45
resize_layer->setResizeMode (nvinfer1::ResizeMode::kNEAREST );
40
46
resize_layer->setName (util::node_info (n).c_str ());
41
47
48
+ // auto out_tensor = resize_layer->getOutput(0);
49
+ // out_shape.erase(out_shape.begin());
50
+ // auto shuffle = ctx->net->addShuffle(*out_tensor);
51
+ // shuffle->setReshapeDimensions(util::toDims(out_shape));
52
+ // shuffle->setName( (util::node_info(n) + " [Reshape to " + util::toStr(util::toDims(out_shape)) + "]").c_str() );
53
+ // auto layer_output = ctx->AssociateValueAndTensor(n->outputs()[0], shuffle->getOutput(0));
54
+ // LOG_DEBUG("Output tensor shape: " << layer_output->getDimensions());
55
+
56
+ // std::cout << "PRINTING STUFF AT THE END!" << std::endl;
57
+ // auto final = util::toVec(shuffle->getOutput(0)->getDimensions());
58
+ // for (auto iter = final.begin(); iter != final.end(); iter++) {
59
+ // std::cout << *iter << std::endl;
60
+ // }
61
+
62
+ // std::raise(SIGABRT);
63
+
42
64
auto layer_output = ctx->AssociateValueAndTensor (n->outputs ()[0 ], resize_layer->getOutput (0 ));
43
65
LOG_DEBUG (" Output tensor shape: " << layer_output->getDimensions ());
66
+
67
+ // std::cout << "PRINTING STUFF AT THE END!" << std::endl;
68
+ // auto final = util::toVec(resize_layer->getOutput(0)->getDimensions());
69
+ // for (auto iter = final.begin(); iter != final.end(); iter++) {
70
+ // std::cout << *iter << std::endl;
71
+ // }
44
72
} else {
45
73
LOG_DEBUG (" scale factor parameter not supported yet." );
46
74
}
0 commit comments