tvm
nn.h
Go to the documentation of this file.
1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  */
19 
24 #ifndef TVM_RELAY_ATTRS_NN_H_
25 #define TVM_RELAY_ATTRS_NN_H_
26 
27 #include <tvm/ir/attrs.h>
28 #include <tvm/relay/base.h>
29 
30 #include <string>
31 
32 namespace tvm {
33 namespace relay {
34 
42 struct BiasAddAttrs : public tvm::AttrsNode<BiasAddAttrs> {
43  int axis;
44 
45  TVM_DECLARE_ATTRS(BiasAddAttrs, "relay.attrs.BiasAddAttrs") {
46  TVM_ATTR_FIELD(axis).describe("The axis to add the bias").set_default(1);
47  }
48 };
49 
51 struct Conv1DAttrs : public tvm::AttrsNode<Conv1DAttrs> {
55  int groups;
62 
63  TVM_DECLARE_ATTRS(Conv1DAttrs, "relay.attrs.Conv1DAttrs") {
64  TVM_ATTR_FIELD(strides)
65  .set_default(Array<IndexExpr>({
66  1,
67  }))
68  .describe("Specifies the stride of the convolution.");
69  TVM_ATTR_FIELD(padding)
70  .set_default(Array<IndexExpr>({0, 0}))
71  .describe(
72  "If padding is non-zero, then the input is implicitly zero-padded"
73  "on both sides for padding number of points");
74  TVM_ATTR_FIELD(dilation)
75  .set_default(Array<IndexExpr>({
76  1,
77  }))
78  .describe("Specifies the dilation rate to use for dilated convolution.");
79  TVM_ATTR_FIELD(groups).set_default(1).describe(
80  "Currently unused but may be added in the future.");
81  TVM_ATTR_FIELD(channels)
82  .describe(
83  "The number of output channels in the convolution."
84  " If it is not set, inferred by shape of the weight.")
85  .set_default(NullValue<IndexExpr>());
86  TVM_ATTR_FIELD(kernel_size)
87  .describe("Specifies the dimensions of the convolution window.")
88  .set_default(NullValue<Array<IndexExpr>>());
89  TVM_ATTR_FIELD(data_layout)
90  .set_default("NCW")
91  .describe(
92  "Dimension ordering of input data. Can be 'NCW', 'NWC', etc."
93  "'N', 'C', 'W' stands for batch, channel, and width"
94  "dimensions respectively. Convolution is applied on the 'W'"
95  "dimension.");
96  TVM_ATTR_FIELD(kernel_layout)
97  .set_default("OIW")
98  .describe(
99  "Dimension ordering of weight. Can be 'OIW', or 'WIO', etc."
100  "'O', 'I', 'W' stands for num_filter, input_channel, and width"
101  "dimensions respectively.");
102  TVM_ATTR_FIELD(out_layout)
103  .set_default("")
104  .describe(
105  "Dimension ordering of output. Can be 'NCW', 'NWC', etc."
106  "'N', 'C', 'W' stands for batch, channel, and width"
107  "dimensions respectively. Default to be same as input layout.");
108 
109  // use 0 bits to indicate none.
110  TVM_ATTR_FIELD(out_dtype)
111  .set_default(NullValue<DataType>())
112  .describe("Output data type, set to explicit type under mixed precision setting");
113  }
114 };
115 
117 struct Conv2DAttrs : public tvm::AttrsNode<Conv2DAttrs> {
121  int groups;
127  tvm::String auto_scheduler_rewritten_layout; // The layout after auto-scheduler's layout rewrite
128  Array<PrimExpr> meta_schedule_original_shape; // The original shape of the weights
130 
131  TVM_DECLARE_ATTRS(Conv2DAttrs, "relay.attrs.Conv2DAttrs") {
132  TVM_ATTR_FIELD(strides)
133  .set_default(Array<IndexExpr>({1, 1}))
134  .describe("Specifies the strides of the convolution.");
135  TVM_ATTR_FIELD(padding)
136  .set_default(Array<IndexExpr>({0, 0}))
137  .describe(
138  "If padding is non-zero, then the input is implicitly zero-padded"
139  "Padding support both symmetric and asymmetric as"
140  "one int : same padding used on all sides"
141  "two int : bottom, right will use same padding as top, left"
142  "four int : padding width in the order of (top, left, bottom, right)");
143  TVM_ATTR_FIELD(dilation)
144  .set_default(Array<IndexExpr>({1, 1}))
145  .describe("Specifies the dilation rate to use for dilated convolution.");
146  TVM_ATTR_FIELD(groups).set_default(1).describe(
147  "Controls the connections between inputs and outputs."
148  "At groups=1, all inputs are convolved to all outputs."
149  "At groups=2, the operation becomes equivalent to having two convolution"
150  "layers side by side, each seeing half the input channels, and producing"
151  "half the output channels, and both subsequently concatenated.");
152  TVM_ATTR_FIELD(channels)
153  .describe(
154  "The number of output channels in the convolution."
155  " If it is not set, inferred by shape of the weight.")
156  .set_default(NullValue<IndexExpr>());
157  TVM_ATTR_FIELD(kernel_size)
158  .describe("Specifies the dimensions of the convolution window.")
159  .set_default(NullValue<Array<IndexExpr>>());
160  TVM_ATTR_FIELD(data_layout)
161  .set_default("NCHW")
162  .describe(
163  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
164  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
165  "dimensions respectively. Convolution is applied on the 'H' and"
166  "'W' dimensions.");
167  TVM_ATTR_FIELD(kernel_layout)
168  .set_default("OIHW")
169  .describe(
170  "Dimension ordering of weight. Can be 'OIHW', 'OIHW16o16i', etc."
171  "'O', 'I', 'H', 'W' stands for num_filter, input_channel, height, and width"
172  "dimensions respectively.");
173  TVM_ATTR_FIELD(out_layout)
174  .set_default("")
175  .describe(
176  "Dimension ordering of output. Can be 'NCHW', 'NHWC', etc."
177  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
178  "dimensions respectively. Default to be same as input layout.");
179 
180  // use 0 bits to indicate none.
181  TVM_ATTR_FIELD(out_dtype)
182  .set_default(NullValue<DataType>())
183  .describe("Output data type, set to explicit type under mixed precision setting");
184  }
185 };
186 
188 struct ConvWinogradWeightTransformAttrs : public tvm::AttrsNode<ConvWinogradWeightTransformAttrs> {
190 
192  "relay.attrs.ConvWinogradWeightTransformAttrs") {
193  TVM_ATTR_FIELD(tile_size).describe(
194  "Tile size of winograd. E.g. 2 for F(2x2, 3x3) and 4 for F(4x4, 3x3)");
195  }
196 };
197 
199 struct ConvGemmWeightTransformAttrs : public tvm::AttrsNode<ConvGemmWeightTransformAttrs> {
202 
203  TVM_DECLARE_ATTRS(ConvGemmWeightTransformAttrs, "relay.attrs.ConvGemmWeightTransformAttrs") {
204  TVM_ATTR_FIELD(tile_rows).describe("Tile rows of the weight transformation for ConvGemm.");
205  TVM_ATTR_FIELD(tile_cols).describe("Tile columns of the weight transformation for ConvGemm.");
206  }
207 };
208 
210 struct Conv2DWinogradAttrs : public tvm::AttrsNode<Conv2DWinogradAttrs> {
215  int groups;
221  tvm::String auto_scheduler_rewritten_layout; // The layout after auto-scheduler's layout rewrite
222  Array<PrimExpr> meta_schedule_original_shape; // The original shape of the weights
224 
225  TVM_DECLARE_ATTRS(Conv2DWinogradAttrs, "relay.attrs.Conv2DWinogradAttrs") {
226  TVM_ATTR_FIELD(tile_size).describe(
227  "The tile size of winograd. E.g. 2 for F(2x2, 3x3) and 4 for F(4x4, 3x3)");
228  TVM_ATTR_FIELD(strides)
229  .set_default(Array<IndexExpr>({1, 1}))
230  .describe("Specifies the strides of the convolution.");
231  TVM_ATTR_FIELD(padding)
232  .set_default(Array<IndexExpr>({0, 0}))
233  .describe(
234  "If padding is non-zero, then the input is implicitly zero-padded"
235  "Padding support both symmetric and asymmetric as"
236  "one int : same padding used on all sides"
237  "two int : bottom, right will use same padding as top, left"
238  "four int : padding width in the order of (top, left, bottom, right)");
239  TVM_ATTR_FIELD(dilation)
240  .set_default(Array<IndexExpr>({1, 1}))
241  .describe("Specifies the dilation rate to use for dilated convolution.");
242  TVM_ATTR_FIELD(groups).set_default(1).describe(
243  "Controls the connections between inputs and outputs."
244  "At groups=1, all inputs are convolved to all outputs."
245  "At groups=2, the operation becomes equivalent to having two convolution"
246  "layers side by side, each seeing half the input channels, and producing"
247  "half the output channels, and both subsequently concatenated.");
248  TVM_ATTR_FIELD(channels)
249  .describe(
250  "The number of output channels in the convolution."
251  " If it is not set, inferred by shape of the weight.")
252  .set_default(NullValue<IndexExpr>());
253  TVM_ATTR_FIELD(kernel_size)
254  .describe("Specifies the dimensions of the convolution window.")
255  .set_default(NullValue<Array<IndexExpr>>());
256  TVM_ATTR_FIELD(data_layout)
257  .set_default("NCHW")
258  .describe(
259  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
260  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
261  "dimensions respectively. Convolution is applied on the 'H' and"
262  "'W' dimensions.");
263  TVM_ATTR_FIELD(kernel_layout)
264  .set_default("OIHW")
265  .describe(
266  "Dimension ordering of weight. Can be 'OIHW', 'OIHW16o16i', etc."
267  "'O', 'I', 'H', 'W' stands for num_filter, input_channel, height, and width"
268  "dimensions respectively.");
269  TVM_ATTR_FIELD(out_layout)
270  .set_default("")
271  .describe(
272  "Dimension ordering of output. Can be 'NCHW', 'NHWC', etc."
273  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
274  "dimensions respectively. Default to be same as input layout.");
275 
276  // use 0 bits to indicate none.
277  TVM_ATTR_FIELD(out_dtype)
278  .set_default(NullValue<DataType>())
279  .describe("Output data type, set to explicit type under mixed precision setting");
280  }
281 };
282 
285  : public tvm::AttrsNode<Conv2DWinogradNNPACKWeightTransformAttrs> {
288 
290  "relay.attrs.Conv2DWinogradNNPACKWeightTransformAttrs") {
291  TVM_ATTR_FIELD(convolution_algorithm)
292  .describe(
293  "The convolution algorithm for Winograd NNPACK. "
294  "E.g. tvm.contrib.nnpack.ConvolutionAlgorithm.WT_8x8 for WT_8x8, "
295  "tvm.contrib.nnpack.ConvolutionAlgorithm.WT_8x8_FP16 for WT_8x8_FP16");
296  TVM_ATTR_FIELD(out_dtype)
297  .set_default(NullValue<DataType>())
298  .describe("Output data type, set to explicit type under mixed precision setting");
299  }
300 };
301 
303 struct Conv3DAttrs : public tvm::AttrsNode<Conv3DAttrs> {
307  int groups;
313  tvm::String auto_scheduler_rewritten_layout; // The layout after auto-scheduler's layout rewrite
314  Array<PrimExpr> meta_schedule_original_shape; // The original shape of the weights
316 
317  TVM_DECLARE_ATTRS(Conv3DAttrs, "relay.attrs.Conv3DAttrs") {
318  TVM_ATTR_FIELD(strides)
319  .set_default(Array<IndexExpr>({1, 1, 1}))
320  .describe("Specifies the strides of the convolution.");
321  TVM_ATTR_FIELD(padding)
322  .set_default(Array<IndexExpr>({0, 0, 0}))
323  .describe(
324  "If padding is non-zero, then the input is implicitly zero-padded"
325  "Padding support both symmetric and asymmetric as"
326  "one int : same padding used on all sides"
327  "three int : back, bottom, right will use same padding as front, top, left"
328  "six int : padding width in the order of (front, top, left, back, bottom,"
329  "right)");
330  TVM_ATTR_FIELD(dilation)
331  .set_default(Array<IndexExpr>({1, 1, 1}))
332  .describe("Specifies the dilation rate to use for dilated convolution.");
333  TVM_ATTR_FIELD(groups).set_default(1).describe(
334  "Controls the connections between inputs and outputs."
335  "At groups=1, all inputs are convolved to all outputs."
336  "At groups=2, the operation becomes equivalent to having two convolution"
337  "layers side by side, each seeing half the input channels, and producing"
338  "half the output channels, and both subsequently concatenated.");
339  TVM_ATTR_FIELD(channels)
340  .describe(
341  "The number of output channels in the convolution."
342  " If it is not set, inferred by shape of the weight.")
343  .set_default(NullValue<IndexExpr>());
344  TVM_ATTR_FIELD(kernel_size)
345  .describe("Specifies the dimensions of the convolution window.")
346  .set_default(NullValue<Array<IndexExpr>>());
347  TVM_ATTR_FIELD(data_layout)
348  .set_default("NCDHW")
349  .describe(
350  "Dimension ordering of input data. Can be 'NCDHW', 'NDHWC', etc."
351  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
352  "dimensions respectively. Convolution is applied on the 'D', 'H' and"
353  "'W' dimensions.");
354  TVM_ATTR_FIELD(kernel_layout)
355  .set_default("OIDHW")
356  .describe(
357  "Dimension ordering of weight. Can be 'OIDHW', 'OIDHW16o16i', etc."
358  "'O', 'I', 'D', 'H', 'W' stands for num_filter, input_channel, depth, height,"
359  "and width dimensions respectively.");
360  TVM_ATTR_FIELD(out_layout)
361  .set_default("")
362  .describe(
363  "Dimension ordering of output. Can be 'NCDHW', 'NDHWC', etc."
364  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
365  "dimensions respectively. Default to be same as input layout.");
366 
367  // use 0 bits to indicate none.
368  TVM_ATTR_FIELD(out_dtype)
369  .set_default(NullValue<DataType>())
370  .describe("Output data type, set to explicit type under mixed precision setting");
371  }
372 };
373 
375 struct Conv3DTransposeAttrs : public tvm::AttrsNode<Conv3DTransposeAttrs> {
382  int groups;
387 
388  TVM_DECLARE_ATTRS(Conv3DTransposeAttrs, "relay.attrs.Conv3DTransposeAttrs") {
389  TVM_ATTR_FIELD(channels)
390  .set_default(NullValue<IndexExpr>())
391  .describe(
392  "The dimensionality of the output space"
393  "i.e. the number of output channels in the convolution.");
394  TVM_ATTR_FIELD(kernel_size)
395  .describe("The dimensions of the convolution window.")
396  .set_default(NullValue<Array<IndexExpr>>());
397  TVM_ATTR_FIELD(strides)
398  .set_default(Array<IndexExpr>({1, 1, 1}))
399  .describe("The strides of the convolution.");
400  TVM_ATTR_FIELD(output_padding)
401  .set_default(Array<IndexExpr>({0, 0, 0}))
402  .describe(
403  "Zero-padding added to one side of the output."
404  "Padding support both symmetric and asymmetric as"
405  "one int : same padding used on all sides"
406  "three int : front, bottom, right will use same padding as back, top, left"
407  "six int : padding width in the order of (front, top, left, back, bottom, right)");
408  TVM_ATTR_FIELD(padding)
409  .set_default(Array<IndexExpr>({0, 0, 0}))
410  .describe(
411  "If padding is non-zero, then the input is implicitly zero-padded"
412  "Padding support both symmetric and asymmetric as"
413  "one int : same padding used on all sides"
414  "three int : front, bottom, right will use same padding as back, top, left"
415  "six int : padding width in the order of (front, top, left, back, bottom, right)");
416  TVM_ATTR_FIELD(dilation)
417  .set_default(Array<IndexExpr>({1, 1, 1}))
418  .describe("Specifies the dilation rate to use for dilated convolution.");
419  TVM_ATTR_FIELD(groups).set_default(1).describe(
420  "Controls the connections between inputs and outputs."
421  "At groups=1, all inputs are convolved to all outputs."
422  "At groups=2, the operation becomes equivalent to having two convolution"
423  "layers side by side, each seeing half the input channels, and producing"
424  "half the output channels, and both subsequently concatenated.");
425  TVM_ATTR_FIELD(data_layout)
426  .set_default("NCDHW")
427  .describe(
428  "Dimension ordering of data. Can be 'NCDHW', 'NDHWC', etc."
429  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
430  "dimensions respectively. Convolution is applied on the 'D', 'H' and"
431  "'W' dimensions.");
432  TVM_ATTR_FIELD(kernel_layout)
433  .set_default("OIDHW")
434  .describe(
435  "Dimension ordering of data and weight. Can be 'OIDHW', 'OIDHW16o16i', etc."
436  "'O', 'I', 'D', 'H', 'W' stands for num_filter, input_channel, depth, height, and width"
437  "dimensions respectively.");
438  TVM_ATTR_FIELD(out_layout)
439  .set_default("")
440  .describe(
441  "Dimension ordering of output. Can be 'NCDHW', 'NDHWC', etc."
442  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
443  "dimensions respectively. Default to be same as input layout.");
444  TVM_ATTR_FIELD(out_dtype)
445  .set_default(NullValue<DataType>())
446  .describe("Output data type, set to explicit type under mixed precision setting");
447  }
448 };
449 
451 struct Conv3DWinogradAttrs : public tvm::AttrsNode<Conv3DWinogradAttrs> {
456  int groups;
459  std::string data_layout;
460  std::string kernel_layout;
461  std::string out_layout;
463 
464  TVM_DECLARE_ATTRS(Conv3DWinogradAttrs, "relay.attrs.Conv3DWinogradAttrs") {
465  TVM_ATTR_FIELD(tile_size).describe(
466  "The tile size of winograd. E.g. 2 for F(2x2x2, 3x3x3) and 4 for F(4x4x4, 3x3x3)");
467  TVM_ATTR_FIELD(strides)
468  .set_default(Array<IndexExpr>({1, 1, 1}))
469  .describe("Specifies the strides of the convolution.");
470  TVM_ATTR_FIELD(padding)
471  .set_default(Array<IndexExpr>({0, 0, 0}))
472  .describe(
473  "If padding is non-zero, then the input is implicitly zero-padded"
474  "Padding support both symmetric and asymmetric as"
475  "one int : same padding used on all sides"
476  "three int : back, bottom, right will use same padding as front, top, left"
477  "six int : padding width in the order of (front, top, left, back, bottom,"
478  "right)");
479  TVM_ATTR_FIELD(dilation)
480  .set_default(Array<IndexExpr>({1, 1, 1}))
481  .describe("Specifies the dilation rate to use for dilated convolution.");
482  TVM_ATTR_FIELD(groups).set_default(1).describe(
483  "Controls the connections between inputs and outputs."
484  "At groups=1, all inputs are convolved to all outputs."
485  "At groups=2, the operation becomes equivalent to having two convolution"
486  "layers side by side, each seeing half the input channels, and producing"
487  "half the output channels, and both subsequently concatenated.");
488  TVM_ATTR_FIELD(channels)
489  .describe(
490  "The number of output channels in the convolution."
491  " If it is not set, inferred by shape of the weight.")
492  .set_default(NullValue<IndexExpr>());
493  TVM_ATTR_FIELD(kernel_size)
494  .describe("Specifies the dimensions of the convolution window.")
495  .set_default(NullValue<Array<IndexExpr>>());
496  TVM_ATTR_FIELD(data_layout)
497  .set_default("NCDHW")
498  .describe(
499  "Dimension ordering of input data. Can be 'NCDHW', 'NDHWC', etc."
500  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
501  "dimensions respectively. Convolution is applied on the 'D', 'H' and"
502  "'W' dimensions.");
503  TVM_ATTR_FIELD(kernel_layout)
504  .set_default("OIDHW")
505  .describe(
506  "Dimension ordering of weight. Can be 'OIDHW', 'OIDHW16o16i', etc."
507  "'O', 'I', 'D', 'H', 'W' stands for num_filter, input_channel, depth, height,"
508  "and width dimensions respectively.");
509  TVM_ATTR_FIELD(out_layout)
510  .set_default("")
511  .describe(
512  "Dimension ordering of output. Can be 'NCDHW', 'NDHWC', etc."
513  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
514  "dimensions respectively. Default to be same as input layout.");
515 
516  // use 0 bits to indicate none.
517  TVM_ATTR_FIELD(out_dtype)
518  .set_default(NullValue<DataType>())
519  .describe("Output data type, set to explicit type under mixed precision setting");
520  }
521 };
522 
524 struct SoftmaxAttrs : public tvm::AttrsNode<SoftmaxAttrs> {
525  int axis;
526 
527  TVM_DECLARE_ATTRS(SoftmaxAttrs, "relay.attrs.SoftmaxAttrs") {
528  TVM_ATTR_FIELD(axis).set_default(-1).describe("The axis to sum over when computing softmax.");
529  }
530 };
531 
533 struct Conv2DTransposeAttrs : public tvm::AttrsNode<Conv2DTransposeAttrs> {
540  int groups;
541  std::string data_layout;
542  std::string kernel_layout;
543  std::string out_layout;
545 
546  TVM_DECLARE_ATTRS(Conv2DTransposeAttrs, "relay.attrs.Conv2DTransposeAttrs") {
547  TVM_ATTR_FIELD(channels)
548  .set_default(NullValue<IndexExpr>())
549  .describe(
550  "The dimensionality of the output space"
551  "i.e. the number of output channels in the convolution.");
552  TVM_ATTR_FIELD(kernel_size)
553  .describe("The dimensions of the convolution window.")
554  .set_default(NullValue<Array<IndexExpr>>());
555  TVM_ATTR_FIELD(strides)
556  .set_default(Array<IndexExpr>({1, 1}))
557  .describe("The strides of the convolution.");
558  TVM_ATTR_FIELD(output_padding)
559  .set_default(Array<IndexExpr>({0, 0}))
560  .describe(
561  "Zero-padding added to one side of the output."
562  "Padding support both symmetric and asymmetric as"
563  "one int : same padding used on all sides"
564  "two int : bottom, right will use same padding as top, left"
565  "four int : padding width in the order of (top, left, bottom, right)");
566  TVM_ATTR_FIELD(padding)
567  .set_default(Array<IndexExpr>({0, 0}))
568  .describe(
569  "If padding is non-zero, then the input is implicitly zero-padded"
570  "Padding support both symmetric and asymmetric as"
571  "one int : same padding used on all sides"
572  "two int : bottom, right will use same padding as top, left"
573  "four int : padding width in the order of (top, left, bottom, right)");
574  TVM_ATTR_FIELD(dilation)
575  .set_default(Array<IndexExpr>({1, 1}))
576  .describe("Specifies the dilation rate to use for dilated convolution.");
577  TVM_ATTR_FIELD(groups).set_default(1).describe(
578  "Controls the connections between inputs and outputs."
579  "At groups=1, all inputs are convolved to all outputs."
580  "At groups=2, the operation becomes equivalent to having two convolution"
581  "layers side by side, each seeing half the input channels, and producing"
582  "half the output channels, and both subsequently concatenated.");
583  TVM_ATTR_FIELD(data_layout)
584  .set_default("NCHW")
585  .describe(
586  "Dimension ordering of data. Can be 'NCHW', 'NHWC', etc."
587  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
588  "dimensions respectively. Convolution is applied on the 'H' and"
589  "'W' dimensions.");
590  TVM_ATTR_FIELD(kernel_layout)
591  .set_default("OIHW")
592  .describe(
593  "Dimension ordering of data and weight. Can be 'OIHW', 'OIHW16o16i', etc."
594  "'O', 'I', 'H', 'W' stands for num_filter, input_channel, height, and width"
595  "dimensions respectively.");
596  TVM_ATTR_FIELD(out_layout)
597  .set_default("")
598  .describe(
599  "Dimension ordering of output. Can be 'NCHW', 'NHWC', etc."
600  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
601  "dimensions respectively. Default to be same as input layout.");
602  TVM_ATTR_FIELD(out_dtype)
603  .set_default(NullValue<DataType>())
604  .describe("Output data type, set to explicit type under mixed precision setting");
605  }
606 };
607 
609 struct DilateAttrs : public tvm::AttrsNode<DilateAttrs> {
612 
613  TVM_DECLARE_ATTRS(DilateAttrs, "relay.attrs.DilateAttrs") {
614  TVM_ATTR_FIELD(strides)
615  .set_default(Array<IndexExpr>({1, 1}))
616  .describe("Dilation stride on each dimension, 1 means no dilation.");
617  TVM_ATTR_FIELD(dilation_value).set_default(0.0).describe("Value used to dilate the input.");
618  }
619 };
620 
622 struct Conv1DTransposeAttrs : public tvm::AttrsNode<Conv1DTransposeAttrs> {
629  int groups;
630  std::string data_layout;
631  std::string kernel_layout;
632  std::string out_layout;
634 
635  TVM_DECLARE_ATTRS(Conv1DTransposeAttrs, "relay.attrs.Conv1DTransposeAttrs") {
636  TVM_ATTR_FIELD(channels)
637  .set_default(NullValue<IndexExpr>())
638  .describe(
639  "The dimensionality of the output space"
640  "i.e. the number of output channels in the convolution.");
641  TVM_ATTR_FIELD(kernel_size)
642  .describe("The dimensions of the convolution window.")
643  .set_default(NullValue<Array<IndexExpr>>());
644  TVM_ATTR_FIELD(strides)
645  .set_default(Array<IndexExpr>({1}))
646  .describe("The strides of the convolution.");
647  TVM_ATTR_FIELD(output_padding)
648  .set_default(Array<IndexExpr>({0}))
649  .describe("Zero-padding added to one side of the output.");
650  TVM_ATTR_FIELD(padding)
651  .set_default(Array<IndexExpr>({0}))
652  .describe(
653  "Symmetric or asymmetric padding."
654  "Single value: the input is implicitly zero-padded on both sides."
655  "Two values: padding[0] is used for left input padding, "
656  "padding[1] is used for right input padding,");
657  TVM_ATTR_FIELD(dilation)
658  .set_default(Array<IndexExpr>({1}))
659  .describe("Specifies the dilation rate to use for dilated convolution.");
660  TVM_ATTR_FIELD(groups).set_default(1).describe(
661  "Controls the connections between inputs and outputs."
662  "At groups=1, all inputs are convolved to all outputs."
663  "At groups=2, the operation becomes equivalent to having two convolution"
664  "layers side by side, each seeing half the input channels, and producing"
665  "half the output channels, and both subsequently concatenated.");
666  TVM_ATTR_FIELD(data_layout)
667  .set_default("NCW")
668  .describe(
669  "Dimension ordering of data. Can be 'NCW', 'NWC', etc."
670  "'N', 'C', 'W' stands for batch, channel, and width"
671  "dimensions respectively. Convolution is applied on the"
672  "'W' dimension.");
673  TVM_ATTR_FIELD(kernel_layout)
674  .set_default("OIW")
675  .describe(
676  "Dimension ordering of data and weight. Can be 'OIW', 'OIW16o16i', etc."
677  "'O', 'I', 'W' stands for num_filter, input_channel, and width"
678  "dimensions respectively.");
679  TVM_ATTR_FIELD(out_layout)
680  .set_default("")
681  .describe(
682  "Dimension ordering of output. Can be 'NCW', 'NWC', etc."
683  "'N', 'C', 'W' stands for batch, channel, and width"
684  "dimensions respectively. Default to be same as input layout.");
685  TVM_ATTR_FIELD(out_dtype)
686  .set_default(NullValue<DataType>())
687  .describe("Output data type, set to explicit type under mixed precision setting");
688  }
689 };
690 
692 struct MaxPool2DAttrs : public tvm::AttrsNode<MaxPool2DAttrs> {
699  bool ceil_mode;
700 
701  TVM_DECLARE_ATTRS(MaxPool2DAttrs, "relay.attrs.MaxPool2DAttrs") {
702  TVM_ATTR_FIELD(pool_size).describe("Size of the pooling windows.");
703  TVM_ATTR_FIELD(strides)
704  .set_default(Array<IndexExpr>({1, 1}))
705  .describe("Specifies the strides of the convolution.");
706  TVM_ATTR_FIELD(dilation)
707  .set_default(Array<IndexExpr>({1, 1}))
708  .describe("Specifies the dilation of the convolution.");
709  TVM_ATTR_FIELD(padding)
710  .set_default(Array<IndexExpr>({0, 0}))
711  .describe(
712  "If padding is non-zero, then the input is implicitly zero-padded"
713  "Padding support both symmetric and asymmetric as"
714  "one int : same padding used on all sides"
715  "two int : bottom, right will use same padding as top, left"
716  "four int : padding width in the order of (top, left, bottom, right)");
717  TVM_ATTR_FIELD(layout).set_default("NCHW").describe(
718  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
719  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
720  "dimensions respectively. Pooling is applied on the 'H' and"
721  "'W' dimensions.");
722  TVM_ATTR_FIELD(out_layout)
723  .set_default("")
724  .describe(
725  "Dimension ordering of output data. Can be 'NCHW', 'NHWC', etc."
726  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
727  "dimensions respectively. Pooling is applied on the 'H' and"
728  "'W' dimensions.");
729  TVM_ATTR_FIELD(ceil_mode).set_default(false).describe(
730  "When true, will use ceil instead of floor to compute the output shape.");
731  }
732 };
733 
735 struct AvgPool2DAttrs : public tvm::AttrsNode<AvgPool2DAttrs> {
742  bool ceil_mode;
744 
745  TVM_DECLARE_ATTRS(AvgPool2DAttrs, "relay.attrs.AvgPool2DAttrs") {
746  TVM_ATTR_FIELD(pool_size).describe("Size of the pooling windows.");
747  TVM_ATTR_FIELD(strides)
748  .set_default(Array<IndexExpr>({1, 1}))
749  .describe("Specifies the strides of the convolution.");
750  TVM_ATTR_FIELD(dilation)
751  .set_default(Array<IndexExpr>({1, 1}))
752  .describe("Specifies the dilation of the convolution.");
753  TVM_ATTR_FIELD(padding)
754  .set_default(Array<IndexExpr>({0, 0}))
755  .describe(
756  "If padding is non-zero, then the input is implicitly zero-padded"
757  "Padding support both symmetric and asymmetric as"
758  "one int : same padding used on all sides"
759  "two int : bottom, right will use same padding as top, left"
760  "four int : padding width in the order of (top, left, bottom, right)");
761  TVM_ATTR_FIELD(layout).set_default("NCHW").describe(
762  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
763  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
764  "dimensions respectively. Pooling is applied on the 'H' and"
765  "'W' dimensions.");
766  TVM_ATTR_FIELD(out_layout)
767  .set_default("")
768  .describe(
769  "Dimension ordering of output data. Can be 'NCHW', 'NHWC', etc."
770  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
771  "dimensions respectively. Pooling is applied on the 'H' and"
772  "'W' dimensions.");
773  TVM_ATTR_FIELD(ceil_mode).set_default(false).describe(
774  "When true, will use ceil instead of floor to compute the output shape.");
775  TVM_ATTR_FIELD(count_include_pad)
776  .set_default(false)
777  .describe("When true, will include padding to compute the average");
778  }
779 };
780 
782 struct GlobalPool2DAttrs : public tvm::AttrsNode<GlobalPool2DAttrs> {
785 
786  TVM_DECLARE_ATTRS(GlobalPool2DAttrs, "relay.attrs.GlobalPool2DAttrs") {
787  TVM_ATTR_FIELD(layout).set_default("NCHW").describe(
788  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
789  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
790  "dimensions respectively. Pooling is applied on the 'H' and"
791  "'W' dimensions.");
792  TVM_ATTR_FIELD(out_layout)
793  .set_default("")
794  .describe(
795  "Dimension ordering of output data. Can be 'NCHW', 'NHWC', etc."
796  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
797  "dimensions respectively. Pooling is applied on the 'H' and"
798  "'W' dimensions.");
799  }
800 };
801 
803 struct AdaptivePool1DAttrs : public tvm::AttrsNode<AdaptivePool1DAttrs> {
805  std::string layout;
807 
808  TVM_DECLARE_ATTRS(AdaptivePool1DAttrs, "relay.attrs.AdaptivePool1DAttrs") {
809  TVM_ATTR_FIELD(output_size).set_default(Array<IndexExpr>({})).describe("Output width.");
810  TVM_ATTR_FIELD(layout).set_default("NCW").describe(
811  "Dimension ordering of input data. Can be 'NCW', 'NWC', etc."
812  "'N', 'C', 'W' stands for batch, channel, and width"
813  "dimensions respectively. Pooling is applied on the"
814  "'W' dimension.");
815  TVM_ATTR_FIELD(out_layout)
816  .set_default("")
817  .describe(
818  "Dimension ordering of output data. Can be 'NCW', 'NWC', etc."
819  "'N', 'C', 'W' stands for batch, channel, and width"
820  "dimensions respectively. Pooling is applied on the"
821  "'W' dimension.");
822  }
823 };
824 
826 struct AdaptivePool2DAttrs : public tvm::AttrsNode<AdaptivePool2DAttrs> {
828  std::string layout;
830 
831  TVM_DECLARE_ATTRS(AdaptivePool2DAttrs, "relay.attrs.AdaptivePool2DAttrs") {
832  TVM_ATTR_FIELD(output_size)
833  .set_default(Array<IndexExpr>({}))
834  .describe("Output height and width.");
835  TVM_ATTR_FIELD(layout).set_default("NCHW").describe(
836  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
837  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
838  "dimensions respectively. Pooling is applied on the 'H' and"
839  "'W' dimensions.");
840  TVM_ATTR_FIELD(out_layout)
841  .set_default("")
842  .describe(
843  "Dimension ordering of output data. Can be 'NCHW', 'NHWC', etc."
844  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
845  "dimensions respectively. Pooling is applied on the 'H' and"
846  "'W' dimensions.");
847  }
848 };
849 
851 struct AdaptivePool3DAttrs : public tvm::AttrsNode<AdaptivePool3DAttrs> {
853  std::string layout;
855 
856  TVM_DECLARE_ATTRS(AdaptivePool3DAttrs, "relay.attrs.AdaptivePool3DAttrs") {
857  TVM_ATTR_FIELD(output_size)
858  .set_default(Array<IndexExpr>({}))
859  .describe("Output depth, height and width.");
860  TVM_ATTR_FIELD(layout).set_default("NCDHW").describe(
861  "Dimension ordering of input data. Can be 'NCDHW', 'NDHWC', etc."
862  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
863  "dimensions respectively. Pooling is applied on 'D', 'H' and"
864  "'W' dimensions.");
865  TVM_ATTR_FIELD(out_layout)
866  .set_default("")
867  .describe(
868  "Dimension ordering of output data. Can be 'NCDHW', 'NDHWC', etc."
869  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
870  "dimensions respectively. Pooling is applied on 'D', 'H' and"
871  "'W' dimensions.");
872  }
873 };
874 
876 struct MaxPool1DAttrs : public tvm::AttrsNode<MaxPool1DAttrs> {
881  std::string layout;
883  bool ceil_mode;
884 
885  TVM_DECLARE_ATTRS(MaxPool1DAttrs, "relay.attrs.MaxPool1DAttrs") {
886  TVM_ATTR_FIELD(pool_size).describe("Size of the pooling windows.");
887  TVM_ATTR_FIELD(strides)
888  .set_default(Array<IndexExpr>({1}))
889  .describe("Specifies the strides of the convolution.");
890  TVM_ATTR_FIELD(dilation)
891  .set_default(Array<IndexExpr>({1}))
892  .describe("Specifies the dilation of the convolution.");
893  TVM_ATTR_FIELD(padding)
894  .set_default(Array<IndexExpr>({0}))
895  .describe(
896  "If padding is non-zero, then the input is implicitly zero-padded"
897  "Padding supports both symmetric and asymmetric as"
898  "one int : same padding used on each side"
899  "two int : indicates left padding, right padding");
900  TVM_ATTR_FIELD(layout).set_default("NCW").describe(
901  "Dimension ordering of input data. Can be 'NCW', 'NWC', etc."
902  "'N', 'C', 'W' stands for batch, channel, and width"
903  "dimensions respectively. Pooling is applied on the 'W' dimensions.");
904  TVM_ATTR_FIELD(out_layout)
905  .set_default("")
906  .describe(
907  "Dimension ordering of output data. Can be 'NCW', 'NWC', etc."
908  "'N', 'C', 'W' stands for batch, channel, and width"
909  "dimensions respectively. Pooling is applied on the 'W' dimensions.");
910  TVM_ATTR_FIELD(ceil_mode).set_default(false).describe(
911  "When true, will use ceil instead of floor to compute the output shape.");
912  }
913 };
914 
916 struct AvgPool1DAttrs : public tvm::AttrsNode<AvgPool1DAttrs> {
921  std::string layout;
923  bool ceil_mode;
925 
926  TVM_DECLARE_ATTRS(AvgPool1DAttrs, "relay.attrs.AvgPool1DAttrs") {
927  TVM_ATTR_FIELD(pool_size).describe("Size of the pooling windows.");
928  TVM_ATTR_FIELD(strides)
929  .set_default(Array<IndexExpr>({1}))
930  .describe("Specifies the strides of the convolution.");
931  TVM_ATTR_FIELD(dilation)
932  .set_default(Array<IndexExpr>({1}))
933  .describe("Specifies the dilation of the convolution.");
934  TVM_ATTR_FIELD(padding)
935  .set_default(Array<IndexExpr>({0}))
936  .describe(
937  "If padding is non-zero, then the input is implicitly zero-padded"
938  "Padding supports both symmetric and asymmetric as"
939  "one int : same padding used on each side"
940  "two int : indicates left padding, right padding");
941  TVM_ATTR_FIELD(layout).set_default("NCW").describe(
942  "Dimension ordering of input data. Can be 'NCW', 'NHC', etc."
943  "'N', 'C', 'W' stands for batch, channel, and width"
944  "dimensions respectively. Pooling is applied on the 'W' dimension.");
945  TVM_ATTR_FIELD(out_layout)
946  .set_default("")
947  .describe(
948  "Dimension ordering of output data. Can be 'NCW', 'NHC', etc."
949  "'N', 'C', 'W' stands for batch, channel, and width"
950  "dimensions respectively. Pooling is applied on the 'W' dimension.");
951  TVM_ATTR_FIELD(ceil_mode).set_default(false).describe(
952  "When true, will use ceil instead of floor to compute the output shape.");
953  TVM_ATTR_FIELD(count_include_pad)
954  .set_default(false)
955  .describe("When true, will include padding to compute the average");
956  }
957 };
958 
960 struct MaxPool3DAttrs : public tvm::AttrsNode<MaxPool3DAttrs> {
965  std::string layout;
967  bool ceil_mode;
968 
969  TVM_DECLARE_ATTRS(MaxPool3DAttrs, "relay.attrs.MaxPool3DAttrs") {
970  TVM_ATTR_FIELD(pool_size).describe("Size of the pooling windows.");
971  TVM_ATTR_FIELD(strides)
972  .set_default(Array<IndexExpr>({1, 1, 1}))
973  .describe("Specifies the strides of the convolution.");
974  TVM_ATTR_FIELD(dilation)
975  .set_default(Array<IndexExpr>({1, 1, 1}))
976  .describe("Specifies the dilation of the convolution.");
977  TVM_ATTR_FIELD(padding)
978  .set_default(Array<IndexExpr>({0, 0, 0}))
979  .describe(
980  "If padding is non-zero, then the input is implicitly zero-padded"
981  "Padding support both symmetric and asymmetric as"
982  "one int : same padding used on all sides"
983  "three int : back, bottom, right will use same padding as front, top, left"
984  "six int : padding width in the order of (front, top, left, back, bottom, right)");
985  TVM_ATTR_FIELD(layout).set_default("NCDHW").describe(
986  "Dimension ordering of input data. Can be 'NCDHW', 'NDHWC', etc."
987  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
988  "dimensions respectively. Pooling is applied on the 'D', 'H' and"
989  "'W' dimensions.");
990  TVM_ATTR_FIELD(out_layout)
991  .set_default("")
992  .describe(
993  "Dimension ordering of output data. Can be 'NCDHW', 'NDHWC', etc."
994  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
995  "dimensions respectively. Pooling is applied on the 'D', 'H' and"
996  "'W' dimensions.");
997  TVM_ATTR_FIELD(ceil_mode).set_default(false).describe(
998  "When true, will use ceil instead of floor to compute the output shape.");
999  }
1000 };
1001 
1003 struct AvgPool3DAttrs : public tvm::AttrsNode<AvgPool3DAttrs> {
1008  std::string layout;
1012 
1013  TVM_DECLARE_ATTRS(AvgPool3DAttrs, "relay.attrs.AvgPool3DAttrs") {
1014  TVM_ATTR_FIELD(pool_size).describe("Size of the pooling windows.");
1015  TVM_ATTR_FIELD(strides)
1016  .set_default(Array<IndexExpr>({1, 1, 1}))
1017  .describe("Specifies the strides of the convolution.");
1018  TVM_ATTR_FIELD(dilation)
1019  .set_default(Array<IndexExpr>({1, 1, 1}))
1020  .describe("Specifies the dilation of the convolution.");
1021  TVM_ATTR_FIELD(padding)
1022  .set_default(Array<IndexExpr>({0, 0, 0}))
1023  .describe(
1024  "If padding is non-zero, then the input is implicitly zero-padded"
1025  "Padding support both symmetric and asymmetric as"
1026  "one int : same padding used on all sides"
1027  "three int : back, bottom, right will use same padding as front, top, left"
1028  "six int : padding width in the order of (front, top, left, back, bottom, right)");
1029  TVM_ATTR_FIELD(layout).set_default("NCDHW").describe(
1030  "Dimension ordering of input data. Can be 'NCDHW', 'NDHWC', etc."
1031  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
1032  "dimensions respectively. Pooling is applied on the 'D', 'H' and"
1033  "'W' dimensions.");
1034  TVM_ATTR_FIELD(out_layout)
1035  .set_default("")
1036  .describe(
1037  "Dimension ordering of output data. Can be 'NCDHW', 'NDHWC', etc."
1038  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
1039  "dimensions respectively. Pooling is applied on the 'D', 'H' and"
1040  "'W' dimensions.");
1041  TVM_ATTR_FIELD(ceil_mode).set_default(false).describe(
1042  "When true, will use ceil instead of floor to compute the output shape.");
1043  TVM_ATTR_FIELD(count_include_pad)
1044  .set_default(false)
1045  .describe("When true, will include padding to compute the average");
1046  }
1047 };
1048 
1050 struct MatmulAttrs : public tvm::AttrsNode<MatmulAttrs> {
1055  tvm::String auto_scheduler_rewritten_layout; // The layout after auto-scheduler's layout rewrite
1056  Array<PrimExpr> meta_schedule_original_shape; // The original shape of the weights
1057 
1058  TVM_DECLARE_ATTRS(MatmulAttrs, "relay.attrs.MatmulAttrs") {
1059  TVM_ATTR_FIELD(units).describe("Number of hidden units of the dense transformation.");
1060 
1061  // use 0 bits to indicate none.
1062  TVM_ATTR_FIELD(out_dtype)
1063  .set_default(NullValue<DataType>())
1064  .describe("Output data type, set to explicit type under mixed precision setting");
1065 
1066  TVM_ATTR_FIELD(transpose_a)
1067  .set_default(false)
1068  .describe("Whether the first input tensor is in transposed format.");
1069 
1070  TVM_ATTR_FIELD(transpose_b)
1071  .set_default(false)
1072  .describe("Whether the second input tensor is in transposed format.");
1073  }
1074 };
1075 
1077 struct DenseAttrs : public tvm::AttrsNode<DenseAttrs> {
1079  tvm::String auto_scheduler_rewritten_layout; // The layout after auto-scheduler's layout rewrite
1080  Array<PrimExpr> meta_schedule_original_shape; // The original shape of the weights
1082 
1083  TVM_DECLARE_ATTRS(DenseAttrs, "relay.attrs.DenseAttrs") {
1084  TVM_ATTR_FIELD(units).describe("Number of hidden units of the dense transformation.");
1085 
1086  // use 0 bits to indicate none.
1087  TVM_ATTR_FIELD(out_dtype)
1088  .set_default(NullValue<DataType>())
1089  .describe("Output data type, set to explicit type under mixed precision setting");
1090  }
1091 };
1092 
1094 struct DensePackAttrs : public tvm::AttrsNode<DensePackAttrs> {
1098 
1099  TVM_DECLARE_ATTRS(DensePackAttrs, "relay.attrs.DensePackAttrs") {
1100  TVM_ATTR_FIELD(units).describe("Number of hidden units of the dense transformation.");
1101 
1102  // use 0 bits to indicate none.
1103  TVM_ATTR_FIELD(out_dtype)
1104  .set_default(NullValue<DataType>())
1105  .describe("Output data type, set to explicit type under mixed precision setting");
1106  TVM_ATTR_FIELD(weight_layout)
1107  .set_default("NC")
1108  .describe("Dimension ordering of weight. Packed layouts, such as NC8n, are possible.");
1109  }
1110 };
1111 
1113 struct BatchMatmulAttrs : public tvm::AttrsNode<BatchMatmulAttrs> {
1117  tvm::String auto_scheduler_rewritten_layout; // The layout after auto-scheduler's layout rewrite
1118  Array<PrimExpr> meta_schedule_original_shape; // The original shape of the weights
1119 
1120  TVM_DECLARE_ATTRS(BatchMatmulAttrs, "relay.attrs.BatchMatmulAttrs") {
1121  // use 0 bits to indicate none.
1122  TVM_ATTR_FIELD(out_dtype)
1123  .set_default(NullValue<DataType>())
1124  .describe("Output data type, set to explicit type under mixed precision setting");
1125 
1126  TVM_ATTR_FIELD(transpose_a)
1127  .set_default(false)
1128  .describe("Whether the first input tensor is in transposed format.");
1129 
1130  TVM_ATTR_FIELD(transpose_b)
1131  .set_default(false)
1132  .describe("Whether the second input tensor is in transposed format.");
1133  }
1134 };
1135 
1137 struct SparseDenseAttrs : public tvm::AttrsNode<SparseDenseAttrs> {
1139 
1140  TVM_DECLARE_ATTRS(SparseDenseAttrs, "relay.attrs.SparseDenseAttrs") {
1141  TVM_ATTR_FIELD(sparse_lhs)
1142  .set_default(false)
1143  .describe(
1144  "Indicate whether sparse matrix is multiplied on the right or the left. If true, then "
1145  "the operation is S * D^T (D dense, S sparse). If false, the operation is D * S^T");
1146  }
1147 };
1148 
1150 struct SparseTransposeAttrs : public tvm::AttrsNode<SparseTransposeAttrs> {
1151  TVM_DECLARE_ATTRS(SparseTransposeAttrs, "relay.attrs.SparseTransposeAttrs") {}
1152 };
1153 
1155 struct SparseConv2DAttrs : public tvm::AttrsNode<SparseConv2DAttrs> {
1156  std::string layout;
1158 
1159  TVM_DECLARE_ATTRS(SparseConv2DAttrs, "relay.attrs.SparseConv2DAttrs") {
1160  TVM_ATTR_FIELD(layout).set_default("NHWC").describe(
1161  "Dimension ordering of input data. Can be 'NCHW', 'NHWC'"
1162  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
1163  "dimensions respectively.");
1164  TVM_ATTR_FIELD(kernel_size)
1165  .set_default(Array<IndexExpr>{1, 1})
1166  .describe("Kernel size for SparseConv2D, 1x1 or 3x3. ");
1167  }
1168 };
1169 
1171 struct FIFOBufferAttrs : public tvm::AttrsNode<FIFOBufferAttrs> {
1172  int axis;
1173 
1174  TVM_DECLARE_ATTRS(FIFOBufferAttrs, "relay.attrs.FIFOBufferAttrs") {
1175  TVM_ATTR_FIELD(axis).set_default(0);
1176  }
1177 };
1178 
1180 struct UpSamplingAttrs : public tvm::AttrsNode<UpSamplingAttrs> {
1181  double scale_h;
1182  double scale_w;
1186 
1187  TVM_DECLARE_ATTRS(UpSamplingAttrs, "relay.attrs.UpSamplingAttrs") {
1188  TVM_ATTR_FIELD(scale_h).describe("The upsampling factor for height");
1189  TVM_ATTR_FIELD(scale_w).describe("The upsampling factor for width");
1190  TVM_ATTR_FIELD(layout).set_default("NCHW").describe(
1191  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
1192  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
1193  "dimensions respectively. Upsampling is applied on the 'H' and"
1194  "'W' dimensions.");
1195  TVM_ATTR_FIELD(method)
1196  .set_default("nearest_neighbor")
1197  .describe(
1198  "Specify the mode to use for scaling."
1199  "nearest_neighbor - Nearest Neighbor"
1200  "bilinear - Bilinear Interpolation"
1201  "bicubic - Bicubic Interpolation");
1202  TVM_ATTR_FIELD(align_corners)
1203  .set_default(false)
1204  .describe("Should be true to preserve the values at the corner pixels");
1205  }
1206 };
1207 
1209 struct UpSampling3DAttrs : public tvm::AttrsNode<UpSampling3DAttrs> {
1210  double scale_d;
1211  double scale_h;
1212  double scale_w;
1213  std::string layout;
1214  std::string method;
1216 
1217  TVM_DECLARE_ATTRS(UpSampling3DAttrs, "relay.attrs.UpSampling3DAttrs") {
1218  TVM_ATTR_FIELD(scale_d).describe("The upsampling factor for depth");
1219  TVM_ATTR_FIELD(scale_h).describe("The upsampling factor for height");
1220  TVM_ATTR_FIELD(scale_w).describe("The upsampling factor for width");
1221  TVM_ATTR_FIELD(layout).set_default("NCDHW").describe(
1222  "Dimension ordering of input data. Can be 'NCDHW', 'NDHWC', etc."
1223  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
1224  "dimensions respectively. Upsampling is applied on the 'D', 'H' and"
1225  "'W' dimensions.");
1226  TVM_ATTR_FIELD(method)
1227  .set_default("nearest_neighbor")
1228  .describe(
1229  "Specify the mode to use for scaling."
1230  "nearest_neighbor - Nearest Neighbor"
1231  "trilinear - Trilinear Interpolation");
1232  TVM_ATTR_FIELD(coordinate_transformation_mode)
1233  .set_default("half_pixel")
1234  .describe(
1235  "Describes how to transform the coordinate in the resized tensor"
1236  "to the coordinate in the original tensor."
1237  "Refer to the ONNX Resize operator specification for details"
1238  "Available options are half_pixel, align_corners and asymmetric");
1239  }
1240 };
1241 
1243 struct PadAttrs : public tvm::AttrsNode<PadAttrs> {
1246 
1247  TVM_DECLARE_ATTRS(PadAttrs, "relay.attrs.PadAttrs") {
1248  TVM_ATTR_FIELD(pad_width).describe(
1249  "Number of values padded to the edges of each axis, "
1250  "in the format of ((before_1, after_1), ..., (before_N, after_N))");
1251  TVM_ATTR_FIELD(pad_mode)
1252  .set_default("constant")
1253  .describe(
1254  "Padding type to use. \"constant\" pads with constant_value, "
1255  "\"edge\" pads using the edge values of the input array, "
1256  "\"reflect\" pads by reflecting values with respect to the edges.");
1257  }
1258 };
1259 
1261 struct MirrorPadAttrs : public tvm::AttrsNode<MirrorPadAttrs> {
1262  std::string mode;
1264 
1265  TVM_DECLARE_ATTRS(MirrorPadAttrs, "relay.attrs.MirrorPadAttrs") {
1266  TVM_ATTR_FIELD(mode)
1267  .set_default("SYMMETRIC")
1268  .describe("Specifies how mirroring should be performed.");
1269  TVM_ATTR_FIELD(pad_width).describe(
1270  "Number of values padded to the edges of each axis, "
1271  "in the format of ((before_1, after_1), ..., (before_N, after_N))");
1272  }
1273 };
1274 
1276 struct LeakyReluAttrs : public tvm::AttrsNode<LeakyReluAttrs> {
1277  double alpha;
1278 
1279  TVM_DECLARE_ATTRS(LeakyReluAttrs, "relay.attrs.LeakyReluAttrs") {
1280  TVM_ATTR_FIELD(alpha).set_lower_bound(0.0).set_default(0.25).describe(
1281  "Slope coefficient for the negative half axis.");
1282  }
1283 };
1284 
1286 struct PReluAttrs : public tvm::AttrsNode<PReluAttrs> {
1287  int axis;
1288 
1289  TVM_DECLARE_ATTRS(PReluAttrs, "relay.attrs.PReluAttrs") {
1290  TVM_ATTR_FIELD(axis).set_default(1).describe(
1291  "Specify which shape axis the channel is specified.");
1292  }
1293 };
1294 
1296 struct DropoutAttrs : public tvm::AttrsNode<DropoutAttrs> {
1297  double rate;
1298  TVM_DECLARE_ATTRS(DropoutAttrs, "relay.attrs.DropoutAttrs") {
1299  TVM_ATTR_FIELD(rate)
1300  .describe("Fraction of the input that gets dropped out during training time")
1301  .set_default(0.5);
1302  }
1303 }; // struct DropoutAttrs
1304 
1306 struct BatchNormAttrs : public tvm::AttrsNode<BatchNormAttrs> {
1307  int axis;
1308  double epsilon;
1309  bool center;
1310  bool scale;
1311 
1312  TVM_DECLARE_ATTRS(BatchNormAttrs, "relay.attrs.BatchNormAttrs") {
1313  TVM_ATTR_FIELD(axis).describe("Specify which shape axis denotes the channel.").set_default(1);
1314  TVM_ATTR_FIELD(epsilon)
1315  .describe("Small float added to variance to avoid dividing by zero")
1316  .set_default(1e-5);
1317  TVM_ATTR_FIELD(center)
1318  .describe("If True, add offset of beta to normalized tensor. If False, beta is ignored")
1319  .set_default(true);
1320  TVM_ATTR_FIELD(scale)
1321  .describe(
1322  "If True, multiply by gamma. If False, gamma is not used. "
1323  "When the next layer is piecewise linear (also, e.g., nn.relu), "
1324  "this can be disabled since the scaling will be done by the next layer.")
1325  .set_default(true);
1326  }
1327 }; // struct BatchNormAttrs
1328 
1330 struct InstanceNormAttrs : public tvm::AttrsNode<InstanceNormAttrs> {
1331  int axis;
1332  double epsilon;
1333  bool center;
1334  bool scale;
1335 
1336  TVM_DECLARE_ATTRS(InstanceNormAttrs, "relay.attrs.InstanceNormAttrs") {
1337  TVM_ATTR_FIELD(axis).describe("Specify which shape axis denotes the channel.").set_default(1);
1338  TVM_ATTR_FIELD(epsilon)
1339  .describe("Small float added to variance to avoid dividing by zero")
1340  .set_default(1e-5);
1341  TVM_ATTR_FIELD(center).set_default(true).describe(
1342  "If true, add offset of beta to normalized tensor; "
1343  "otherwise, beta is ignored.");
1344  TVM_ATTR_FIELD(scale).set_default(true).describe(
1345  "If true, multiply by gamma; otherwise, gamma is ignored.");
1346  }
1347 }; // struct InstanceNormAttrs
1348 
1350 struct LayerNormAttrs : public tvm::AttrsNode<LayerNormAttrs> {
1351  int axis;
1352  double epsilon;
1353  bool center;
1354  bool scale;
1355 
1356  TVM_DECLARE_ATTRS(LayerNormAttrs, "relay.attrs.LayerNormAttrs") {
1357  TVM_ATTR_FIELD(axis).set_default(-1).describe("Specify which shape axis denotes the channel.");
1358  TVM_ATTR_FIELD(epsilon).set_default(1e-5).describe(
1359  "Small float added to variance to avoid dividing by zero");
1360  TVM_ATTR_FIELD(center).set_default(true).describe(
1361  "If true, add offset of beta to normalized tensor; "
1362  "otherwise, beta is ignored.");
1363  TVM_ATTR_FIELD(scale).set_default(true).describe(
1364  "If true, multiply by gamma; otherwise, gamma is ignored.");
1365  }
1366 }; // struct LayerNormAttrs
1367 
1369 struct GroupNormAttrs : public tvm::AttrsNode<GroupNormAttrs> {
1371  int axis;
1372  double epsilon;
1373  bool center;
1374  bool scale;
1375 
1376  TVM_DECLARE_ATTRS(GroupNormAttrs, "relay.attrs.GroupNormAttrs") {
1377  TVM_ATTR_FIELD(num_groups)
1378  .set_default(0)
1379  .describe("Specify number of groups to separate the channels into.");
1380  TVM_ATTR_FIELD(axis).set_default(1).describe("Specify which shape axis denotes the channel.");
1381  TVM_ATTR_FIELD(epsilon).set_default(1e-5).describe(
1382  "Small float added to variance to avoid dividing by zero");
1383  TVM_ATTR_FIELD(center).set_default(true).describe(
1384  "If true, add offset of beta to normalized tensor; "
1385  "otherwise, beta is ignored.");
1386  TVM_ATTR_FIELD(scale).set_default(true).describe(
1387  "If true, multiply by gamma; otherwise, gamma is ignored.");
1388  }
1389 }; // struct GroupNormAttrs
1390 
1392 struct LRNAttrs : public tvm::AttrsNode<LRNAttrs> {
1393  int size;
1394  int axis;
1395  double bias;
1396  double alpha;
1397  double beta;
1398 
1399  TVM_DECLARE_ATTRS(LRNAttrs, "relay.attrs.LRNAttrs") {
1400  TVM_ATTR_FIELD(size).set_default(5).describe(
1401  "The size of the local region to be considered for normalization.");
1402  TVM_ATTR_FIELD(axis).set_default(1).describe("Axis of input data layout channel.");
1403  TVM_ATTR_FIELD(bias).set_default(2).describe("The offset parameter to avoid division by 0.");
1404  TVM_ATTR_FIELD(alpha).set_default(0.0001).describe("The scaling parameter.");
1405  TVM_ATTR_FIELD(beta).set_default(0.75).describe("The exponent parameter.");
1406  }
1407 };
1408 
1410 struct L2NormalizeAttrs : public tvm::AttrsNode<L2NormalizeAttrs> {
1411  double eps;
1413 
1414  TVM_DECLARE_ATTRS(L2NormalizeAttrs, "relay.attrs.L2NormalizeAttrs") {
1415  TVM_ATTR_FIELD(eps).describe("A lower bound value for the norm, to avoid division by 0.");
1416  TVM_ATTR_FIELD(axis).describe("Axis over the normalization applied.");
1417  }
1418 };
1419 
1421 struct DeformableConv2DAttrs : public tvm::AttrsNode<DeformableConv2DAttrs> {
1426  int groups;
1429  std::string data_layout;
1430  std::string kernel_layout;
1431  std::string out_layout;
1433 
1434  TVM_DECLARE_ATTRS(DeformableConv2DAttrs, "relay.attrs.DeformableConv2DAttrs") {
1435  TVM_ATTR_FIELD(strides)
1436  .set_default(Array<IndexExpr>({1, 1}))
1437  .describe("Specifies the strides of the convolution.");
1438  TVM_ATTR_FIELD(padding)
1439  .set_default(Array<IndexExpr>({0, 0}))
1440  .describe(
1441  "If padding is non-zero, then the input is implicitly zero-padded"
1442  "Padding support both symmetric and asymmetric as"
1443  "one int : same padding used on all sides"
1444  "two int : bottom, right will use same padding as top, left"
1445  "four int : padding width in the order of (top, left, bottom, right)");
1446  TVM_ATTR_FIELD(dilation)
1447  .set_default(Array<IndexExpr>({1, 1}))
1448  .describe("Specifies the dilation rate to use for dilated convolution.");
1449  TVM_ATTR_FIELD(deformable_groups)
1450  .set_default(1)
1451  .describe(
1452  "Controls the connections between inputs and offsets."
1453  "Input channels are partitioned into multiple deformable groups. Offsets"
1454  "are shared across input channels in the same deformable group.");
1455  TVM_ATTR_FIELD(groups).set_default(1).describe(
1456  "Controls the connections between inputs and outputs."
1457  "At groups=1, all inputs are convolved to all outputs."
1458  "At groups=2, the operation becomes equivalent to having two convolution"
1459  "layers side by side, each seeing half the input channels, and producing"
1460  "half the output channels, and both subsequently concatenated.");
1461  TVM_ATTR_FIELD(channels)
1462  .describe(
1463  "The number of output channels in the convolution."
1464  " If it is not set, inferred by shape of the weight.")
1465  .set_default(NullValue<IndexExpr>());
1466  TVM_ATTR_FIELD(kernel_size)
1467  .describe("Specifies the dimensions of the convolution window.")
1468  .set_default(NullValue<Array<IndexExpr>>());
1469  TVM_ATTR_FIELD(data_layout)
1470  .set_default("NCHW")
1471  .describe(
1472  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
1473  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
1474  "dimensions respectively. Convolution is applied on the 'H' and"
1475  "'W' dimensions.");
1476  TVM_ATTR_FIELD(kernel_layout)
1477  .set_default("OIHW")
1478  .describe(
1479  "Dimension ordering of weight. Can be 'OIHW', 'OIHW16o16i', etc."
1480  "'O', 'I', 'H', 'W' stands for num_filter, input_channel, height, and width"
1481  "dimensions respectively.");
1482  TVM_ATTR_FIELD(out_layout)
1483  .set_default("")
1484  .describe(
1485  "Dimension ordering of output. Can be 'NCHW', 'NHWC', etc."
1486  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
1487  "dimensions respectively. Default to be same as input layout.");
1488 
1489  // use 0 bits to indicate none.
1490  TVM_ATTR_FIELD(out_dtype)
1491  .set_default(NullValue<DataType>())
1492  .describe("Output data type, set to explicit type under mixed precision setting");
1493  }
1494 };
1495 
1497 struct SubPixelAttrs : public tvm::AttrsNode<SubPixelAttrs> {
1499  std::string layout;
1500  std::string mode;
1501 
1502  TVM_DECLARE_ATTRS(SubPixelAttrs, "relay.attrs.SubPixelAttrs") {
1503  TVM_ATTR_FIELD(block_size)
1504  .describe("The size of subpixel blocks to compose or decompose.")
1505  .set_default(1);
1506  TVM_ATTR_FIELD(layout).set_default("NCHW").describe(
1507  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
1508  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
1509  "dimensions respectively.");
1510  TVM_ATTR_FIELD(mode).set_default("DCR").describe(
1511  "Indicates order in which channels are accessed. Must be one of"
1512  "DCR or CDR.");
1513  }
1514 }; // struct SubPixelAttrs
1515 
1517 struct CorrelationAttrs : public tvm::AttrsNode<CorrelationAttrs> {
1520  int stride1;
1521  int stride2;
1525 
1526  TVM_DECLARE_ATTRS(CorrelationAttrs, "relay.attrs.CorrelationAttrs") {
1527  TVM_ATTR_FIELD(kernel_size)
1528  .describe("Kernel size for correlation, must be an odd number.")
1529  .set_default(1);
1530  TVM_ATTR_FIELD(max_displacement).describe("Max displacement of Correlation.").set_default(1);
1531  TVM_ATTR_FIELD(stride1).describe("Stride for data1.").set_default(1);
1532  TVM_ATTR_FIELD(stride2).describe("Stride for data2.").set_default(1);
1533  TVM_ATTR_FIELD(padding)
1534  .describe("Padding for data1 and data2.")
1535  .set_default(Array<IndexExpr>{0, 0});
1536  TVM_ATTR_FIELD(is_multiply)
1537  .describe("Operation type is either multiplication or substraction.")
1538  .set_default(true);
1539  TVM_ATTR_FIELD(layout).set_default("NCHW").describe(
1540  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
1541  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
1542  "dimensions respectively.");
1543  }
1544 }; // struct CorrelationAttrs
1545 
1547 struct SpaceToBatchNDAttrs : public tvm::AttrsNode<SpaceToBatchNDAttrs> {
1550  double pad_value;
1551 
1552  TVM_DECLARE_ATTRS(SpaceToBatchNDAttrs, "relay.attrs.SpaceToBatchNDAttrs") {
1553  TVM_ATTR_FIELD(block_shape)
1554  .set_default(Array<Integer>({1, 1}))
1555  .describe("1-D containing block size for each spatial dimension.");
1556  TVM_ATTR_FIELD(paddings).describe("2-D containing paddings for each spatial dimension.");
1557  TVM_ATTR_FIELD(pad_value).set_default(0.0).describe("The value used for padding.");
1558  }
1559 }; // struct SpaceToBatchNDAttrs
1560 
1562 struct BatchToSpaceNDAttrs : public tvm::AttrsNode<BatchToSpaceNDAttrs> {
1565 
1566  TVM_DECLARE_ATTRS(BatchToSpaceNDAttrs, "relay.attrs.BatchToSpaceNDAttrs") {
1567  TVM_ATTR_FIELD(block_shape)
1568  .set_default(Array<Integer>({1, 1}))
1569  .describe("1-D containing block size for each spatial dimension.");
1570  TVM_ATTR_FIELD(crops).describe("2-D containing amount to crop from spatial dimension.");
1571  }
1572 }; // struct BatchToSpaceNDAttrs
1573 
1575 struct NLLLossAttrs : public tvm::AttrsNode<NLLLossAttrs> {
1576  std::string reduction;
1578 
1579  TVM_DECLARE_ATTRS(NLLLossAttrs, "relay.attrs.NLLLossAttrs") {
1580  TVM_ATTR_FIELD(reduction).set_default("mean").describe(
1581  "The reduction method to apply to the output. Can be"
1582  "'none', 'mean' or 'sum'.");
1583  TVM_ATTR_FIELD(ignore_index).describe("The target value to ignore.");
1584  }
1585 }; // struct NLLLossAttrs
1586 
1587 } // namespace relay
1588 } // namespace tvm
1589 #endif // TVM_RELAY_ATTRS_NN_H_
std::string data_layout
Definition: nn.h:630
Array< IndexExpr > dilation
Definition: nn.h:306
std::string layout
Definition: nn.h:1213
Attributes for max pool operator.
Definition: nn.h:692
TVM_DECLARE_ATTRS(NLLLossAttrs, "relay.attrs.NLLLossAttrs")
Definition: nn.h:1579
tvm::String out_layout
Definition: nn.h:882
Attributes for prelu operator.
Definition: nn.h:1286
int groups
Definition: nn.h:1426
Array< IndexExpr > padding
Definition: nn.h:738
std::string kernel_layout
Definition: nn.h:631
int axis
Definition: nn.h:43
Array< IndexExpr > kernel_size
Definition: nn.h:624
TVM_DECLARE_ATTRS(Conv3DWinogradAttrs, "relay.attrs.Conv3DWinogradAttrs")
Definition: nn.h:464
IndexExpr channels
Definition: nn.h:623
TVM_DECLARE_ATTRS(MaxPool1DAttrs, "relay.attrs.MaxPool1DAttrs")
Definition: nn.h:885
int size
Definition: nn.h:1393
tvm::String data_layout
Definition: nn.h:310
Attributes for FIFO buffer operator.
Definition: nn.h:1171
tvm::String out_layout
Definition: nn.h:126
Attributes used for the MirrorPadding operator.
Definition: nn.h:1261
Array< Integer > block_shape
Definition: nn.h:1563
TVM_DECLARE_ATTRS(L2NormalizeAttrs, "relay.attrs.L2NormalizeAttrs")
Definition: nn.h:1414
TVM_DECLARE_ATTRS(MaxPool2DAttrs, "relay.attrs.MaxPool2DAttrs")
Definition: nn.h:701
TVM_DECLARE_ATTRS(LayerNormAttrs, "relay.attrs.LayerNormAttrs")
Definition: nn.h:1356
TVM_DECLARE_ATTRS(BatchMatmulAttrs, "relay.attrs.BatchMatmulAttrs")
Definition: nn.h:1120
tvm::String data_layout
Definition: nn.h:124
TVM_DECLARE_ATTRS(Conv2DWinogradNNPACKWeightTransformAttrs, "relay.attrs.Conv2DWinogradNNPACKWeightTransformAttrs")
Definition: nn.h:289
bool count_include_pad
Definition: nn.h:1011
IndexExpr units
Definition: nn.h:1051
int num_groups
Definition: nn.h:1370
TVM_DECLARE_ATTRS(AdaptivePool3DAttrs, "relay.attrs.AdaptivePool3DAttrs")
Definition: nn.h:856
Array< IndexExpr > padding
Definition: nn.h:537
Array< PrimExpr > meta_schedule_original_shape
Definition: nn.h:1056
std::string out_layout
Definition: nn.h:1431
Array< IndexExpr > strides
Definition: nn.h:453
Attributes used in dilate operator.
Definition: nn.h:609
Array< IndexExpr > dilation
Definition: nn.h:455
Attributes for dense_pack operator.
Definition: nn.h:1094
double alpha
Definition: nn.h:1396
IndexExpr channels
Definition: nn.h:1427
Attributes used in winograd weight transformation operators.
Definition: nn.h:284
Array< IndexExpr > strides
Definition: nn.h:1005
int groups
Definition: nn.h:55
DataType out_dtype
Definition: nn.h:223
TVM_DECLARE_ATTRS(FIFOBufferAttrs, "relay.attrs.FIFOBufferAttrs")
Definition: nn.h:1174
runtime implementation for LibTorch/TorchScript.
Definition: analyzer.h:36
int groups
Definition: nn.h:629
IndexExpr channels
Definition: nn.h:216
Add a 1D Tensor to an axis of a data.
Definition: nn.h:42
Array< IndexExpr > output_padding
Definition: nn.h:538
TVM_DECLARE_ATTRS(LRNAttrs, "relay.attrs.LRNAttrs")
Definition: nn.h:1399
Attributes for 3d adaptive pool operator.
Definition: nn.h:851
IndexExpr channels
Definition: nn.h:376
tvm::String layout
Definition: nn.h:740
Array< Array< IndexExpr > > paddings
Definition: nn.h:1549
tvm::String out_layout
Definition: nn.h:220
Array< IndexExpr > kernel_size
Definition: nn.h:535
double scale_d
Definition: nn.h:1210
std::string data_layout
Definition: nn.h:1429
tvm::String auto_scheduler_rewritten_layout
Definition: nn.h:1055
TVM_DECLARE_ATTRS(SoftmaxAttrs, "relay.attrs.SoftmaxAttrs")
Definition: nn.h:527
TVM_DECLARE_ATTRS(Conv2DWinogradAttrs, "relay.attrs.Conv2DWinogradAttrs")
Definition: nn.h:225
TVM_DECLARE_ATTRS(DilateAttrs, "relay.attrs.DilateAttrs")
Definition: nn.h:613
tvm::String kernel_layout
Definition: nn.h:59
int groups
Definition: nn.h:540
std::string layout
Definition: nn.h:921
TVM_DECLARE_ATTRS(MaxPool3DAttrs, "relay.attrs.MaxPool3DAttrs")
Definition: nn.h:969
Array< IndexExpr > pool_size
Definition: nn.h:917
Array< IndexExpr > dilation
Definition: nn.h:54
Attributes for 3D max pool operator.
Definition: nn.h:960
double epsilon
Definition: nn.h:1332
Array< IndexExpr > output_size
Definition: nn.h:804
TVM_DECLARE_ATTRS(ConvGemmWeightTransformAttrs, "relay.attrs.ConvGemmWeightTransformAttrs")
Definition: nn.h:203
TVM_DECLARE_ATTRS(SparseDenseAttrs, "relay.attrs.SparseDenseAttrs")
Definition: nn.h:1140
TVM_DECLARE_ATTRS(Conv3DTransposeAttrs, "relay.attrs.Conv3DTransposeAttrs")
Definition: nn.h:388
TVM_DECLARE_ATTRS(UpSamplingAttrs, "relay.attrs.UpSamplingAttrs")
Definition: nn.h:1187
int groups
Definition: nn.h:121
int ignore_index
Definition: nn.h:1577
TVM_DECLARE_ATTRS(SpaceToBatchNDAttrs, "relay.attrs.SpaceToBatchNDAttrs")
Definition: nn.h:1552
int kernel_size
Definition: nn.h:1518
Attributes for matmul operator.
Definition: nn.h:1050
double scale_w
Definition: nn.h:1182
tvm::String layout
Definition: nn.h:1183
Attributes used in BatchToSpaceND operator.
Definition: nn.h:1562
Attributes used in layer_norm operator.
Definition: nn.h:1350
bool scale
Definition: nn.h:1354
DataType out_dtype
Definition: nn.h:386
IndexExpr channels
Definition: nn.h:308
Array< PrimExpr > meta_schedule_original_shape
Definition: nn.h:128
Array< IndexExpr > strides
Definition: nn.h:878
Array< IndexExpr > dilation
Definition: nn.h:919
Array< IndexExpr > strides
Definition: nn.h:52
double dilation_value
Definition: nn.h:611
tvm::String auto_scheduler_rewritten_layout
Definition: nn.h:1079
bool center
Definition: nn.h:1333
std::string data_layout
Definition: nn.h:459
bool scale
Definition: nn.h:1310
Attributes used in subpixel operators.
Definition: nn.h:1497
bool sparse_lhs
Definition: nn.h:1138
Attributes for leaky relu operator.
Definition: nn.h:1276
TVM_DECLARE_ATTRS(AdaptivePool1DAttrs, "relay.attrs.AdaptivePool1DAttrs")
Definition: nn.h:808
Array< IndexExpr > kernel_size
Definition: nn.h:57
int axis
Definition: nn.h:1331
Array< IndexExpr > strides
Definition: nn.h:1422
double eps
Definition: nn.h:1411
std::string mode
Definition: nn.h:1262
tvm::String layout
Definition: nn.h:697
tvm::String out_layout
Definition: nn.h:966
std::string kernel_layout
Definition: nn.h:542
bool count_include_pad
Definition: nn.h:743
tvm::String out_layout
Definition: nn.h:854
DataType out_dtype
Definition: nn.h:1096
TVM_DECLARE_ATTRS(Conv1DTransposeAttrs, "relay.attrs.Conv1DTransposeAttrs")
Definition: nn.h:635
bool align_corners
Definition: nn.h:1185
TVM_DECLARE_ATTRS(CorrelationAttrs, "relay.attrs.CorrelationAttrs")
Definition: nn.h:1526
TVM_DECLARE_ATTRS(AdaptivePool2DAttrs, "relay.attrs.AdaptivePool2DAttrs")
Definition: nn.h:831
int axis
Definition: nn.h:1307
TVM_DECLARE_ATTRS(BiasAddAttrs, "relay.attrs.BiasAddAttrs")
Definition: nn.h:45
TVM_DECLARE_ATTRS(Conv2DAttrs, "relay.attrs.Conv2DAttrs")
Definition: nn.h:131
IndexExpr channels
Definition: nn.h:534
Attributes used in batch_norm operator.
Definition: nn.h:1306
TVM_DECLARE_ATTRS(LeakyReluAttrs, "relay.attrs.LeakyReluAttrs")
Definition: nn.h:1279
Helpers for attribute objects.
Attributes used in convolution operators with winograd algorithm.
Definition: nn.h:210
Attributes used in 3d winograd convolution operators.
Definition: nn.h:451
Attributes for avg pool operator.
Definition: nn.h:735
Array< PrimExpr > meta_schedule_original_shape
Definition: nn.h:1080
Attributes used in correlation operators.
Definition: nn.h:1517
tvm::String out_layout
Definition: nn.h:1009
TVM_DECLARE_ATTRS(Conv1DAttrs, "relay.attrs.Conv1DAttrs")
Definition: nn.h:63
Array< IndexExpr > pool_size
Definition: nn.h:736
Array< IndexExpr > dilation
Definition: nn.h:539
tvm::String layout
Definition: nn.h:783
int groups
Definition: nn.h:307
Array< IndexExpr > output_size
Definition: nn.h:852
TVM_DECLARE_ATTRS(DenseAttrs, "relay.attrs.DenseAttrs")
Definition: nn.h:1083
int block_size
Definition: nn.h:1498
Array< IndexExpr > strides
Definition: nn.h:304
TVM_DECLARE_ATTRS(MirrorPadAttrs, "relay.attrs.MirrorPadAttrs")
Definition: nn.h:1265
Array< Array< IndexExpr > > pad_width
Definition: nn.h:1263
Attributes for 2d adaptive pool operator.
Definition: nn.h:826
Array< IndexExpr > dilation
Definition: nn.h:214
TVM_DECLARE_ATTRS(DeformableConv2DAttrs, "relay.attrs.DeformableConv2DAttrs")
Definition: nn.h:1434
IndexExpr units
Definition: nn.h:1095
std::string layout
Definition: nn.h:1499
TVM_DECLARE_ATTRS(BatchNormAttrs, "relay.attrs.BatchNormAttrs")
Definition: nn.h:1312
double scale_h
Definition: nn.h:1181
Array< IndexExpr > padding
Definition: nn.h:880
Array< IndexExpr > padding
Definition: nn.h:695
bool transpose_b
Definition: nn.h:1116
Attributes used in convolution operators.
Definition: nn.h:303
Attributes used in winograd weight transformation operators.
Definition: nn.h:188
tvm::String data_layout
Definition: nn.h:383
TVM_DECLARE_ATTRS(GroupNormAttrs, "relay.attrs.GroupNormAttrs")
Definition: nn.h:1376
TVM_DECLARE_ATTRS(AvgPool1DAttrs, "relay.attrs.AvgPool1DAttrs")
Definition: nn.h:926
Array< IndexExpr > padding
Definition: nn.h:305
TVM_DECLARE_ATTRS(UpSampling3DAttrs, "relay.attrs.UpSampling3DAttrs")
Definition: nn.h:1217
Array< IndexExpr > padding
Definition: nn.h:119
std::string method
Definition: nn.h:1214
std::string layout
Definition: nn.h:881
double epsilon
Definition: nn.h:1308
bool ceil_mode
Definition: nn.h:1010
std::string layout
Definition: nn.h:1008
Runtime primitive data type.
Definition: data_type.h:41
tvm::String method
Definition: nn.h:1184
int tile_size
Definition: nn.h:211
Attributes for DeformableConv2D operator.
Definition: nn.h:1421
std::string out_layout
Definition: nn.h:461
Array< IndexExpr > padding
Definition: nn.h:379
Array< IndexExpr > strides
Definition: nn.h:694
TVM_DECLARE_ATTRS(SparseConv2DAttrs, "relay.attrs.SparseConv2DAttrs")
Definition: nn.h:1159
Array< IndexExpr > pool_size
Definition: nn.h:961
bool count_include_pad
Definition: nn.h:924
Attributes used in 1D transposed convolution operator.
Definition: nn.h:622
bool center
Definition: nn.h:1353
Array< IndexExpr > padding
Definition: nn.h:213
tvm::String out_layout
Definition: nn.h:922
TVM_DECLARE_ATTRS(DropoutAttrs, "relay.attrs.DropoutAttrs")
Definition: nn.h:1298
String layout
Definition: nn.h:1524
tvm::String auto_scheduler_rewritten_layout
Definition: nn.h:221
Array, container representing a contiguous sequence of ObjectRefs.
Definition: array.h:289
int groups
Definition: nn.h:215
Array< IndexExpr > kernel_size
Definition: nn.h:458
std::string layout
Definition: nn.h:853
Attributes for upsampling3d operator.
Definition: nn.h:1209
std::string data_layout
Definition: nn.h:541
Array< IndexExpr > strides
Definition: nn.h:962
Array< IndexExpr > output_padding
Definition: nn.h:380
double scale_h
Definition: nn.h:1211
Array< IndexExpr > padding
Definition: nn.h:626
Attributes used in transposed convolution operator.
Definition: nn.h:375
Array< IndexExpr > kernel_size
Definition: nn.h:217
Array< Integer > block_shape
Definition: nn.h:1548
IndexExpr channels
Definition: nn.h:56
Array< IndexExpr > kernel_size
Definition: nn.h:1428
std::string coordinate_transformation_mode
Definition: nn.h:1215
Attributes used in SpaceToBatchND operator.
Definition: nn.h:1547
TVM_DECLARE_ATTRS(SparseTransposeAttrs, "relay.attrs.SparseTransposeAttrs")
Definition: nn.h:1151
double alpha
Definition: nn.h:1277
#define TVM_ATTR_FIELD(FieldName)
Declare an attribute field.
Definition: attrs.h:76
Attributes used in transposed convolution operator.
Definition: nn.h:533
bool center
Definition: nn.h:1373
Attributes for 3D avg pool operator.
Definition: nn.h:1003
Reference to string objects.
Definition: string.h:97
Array< Array< Integer > > pad_width
Definition: nn.h:1244
DataType out_dtype
Definition: nn.h:129
std::string out_layout
Definition: nn.h:632
Array< IndexExpr > dilation
Definition: nn.h:739
tvm::String kernel_layout
Definition: nn.h:384
std::string kernel_layout
Definition: nn.h:1430
TVM_DECLARE_ATTRS(MatmulAttrs, "relay.attrs.MatmulAttrs")
Definition: nn.h:1058
Attributes for sparse_dense operator.
Definition: nn.h:1137
DataType out_dtype
Definition: nn.h:1432
Array< IndexExpr > strides
Definition: nn.h:118
bool ceil_mode
Definition: nn.h:883
Attributes for global pool operator.
Definition: nn.h:782
double beta
Definition: nn.h:1397
Attributes used in softmax operators.
Definition: nn.h:524
Array< PrimExpr > meta_schedule_original_shape
Definition: nn.h:222
Attributes used in convolution operators.
Definition: nn.h:117
DataType out_dtype
Definition: nn.h:1052
Attributes used in NLLLoss operator.
Definition: nn.h:1575
tvm::String out_layout
Definition: nn.h:829
int max_displacement
Definition: nn.h:1519
Array< IndexExpr > kernel_size
Definition: nn.h:309
Attributes for 1D max pool operator.
Definition: nn.h:876
Array< IndexExpr > output_size
Definition: nn.h:827
Array< IndexExpr > padding
Definition: nn.h:1423
double scale_w
Definition: nn.h:1212
TVM_DECLARE_ATTRS(Conv2DTransposeAttrs, "relay.attrs.Conv2DTransposeAttrs")
Definition: nn.h:546
TVM_DECLARE_ATTRS(BatchToSpaceNDAttrs, "relay.attrs.BatchToSpaceNDAttrs")
Definition: nn.h:1566
DataType NullValue< DataType >()
Definition: attrs.h:90
bool scale
Definition: nn.h:1374
Array< PrimExpr > meta_schedule_original_shape
Definition: nn.h:314
int axis
Definition: nn.h:1351
int deformable_groups
Definition: nn.h:1425
tvm::String kernel_layout
Definition: nn.h:311
tvm::String weight_layout
Definition: nn.h:1097
std::string layout
Definition: nn.h:965
tvm::String data_layout
Definition: nn.h:58
Array< IndexExpr > padding
Definition: nn.h:1007
Attributes for batch matmul operator.
Definition: nn.h:1113
Attributes used in dropout operator.
Definition: nn.h:1296
tvm::String out_layout
Definition: nn.h:741
std::string kernel_layout
Definition: nn.h:460
Array< IndexExpr > strides
Definition: nn.h:737
int stride2
Definition: nn.h:1521
Attributes for sparse_dense operator.
Definition: nn.h:1155
Attributes for dense operator.
Definition: nn.h:1077
bool ceil_mode
Definition: nn.h:699
int groups
Definition: nn.h:456
tvm::String kernel_layout
Definition: nn.h:125
TVM_DECLARE_ATTRS(GlobalPool2DAttrs, "relay.attrs.GlobalPool2DAttrs")
Definition: nn.h:786
Array< IndexExpr > dilation
Definition: nn.h:381
IndexExpr channels
Definition: nn.h:122
Array< IndexExpr > kernel_size
Definition: nn.h:123
Array< IndexExpr > padding
Definition: nn.h:53
int axis
Definition: nn.h:1287
IndexExpr units
Definition: nn.h:1078
Attributes for 1d adaptive pool operator.
Definition: nn.h:803
DataType out_dtype
Definition: nn.h:462
bool transpose_a
Definition: nn.h:1115
Array< IndexExpr > strides
Definition: nn.h:625
Attributes used in gemm weight transformation operators.
Definition: nn.h:199
TVM_DECLARE_ATTRS(ConvWinogradWeightTransformAttrs, "relay.attrs.ConvWinogradWeightTransformAttrs")
Definition: nn.h:191
Array< IndexExpr > pool_size
Definition: nn.h:1004
IndexExpr channels
Definition: nn.h:457
tvm::String out_layout
Definition: nn.h:806
bool ceil_mode
Definition: nn.h:967
Array< IndexExpr > pool_size
Definition: nn.h:693
The base class of the all the Use "curiously recurring template pattern".
Definition: attrs.h:834
DataType out_dtype
Definition: nn.h:544
Array< IndexExpr > output_padding
Definition: nn.h:627
tvm::String auto_scheduler_rewritten_layout
Definition: nn.h:127
tvm::String kernel_layout
Definition: nn.h:219
Attributes for upsampling operator.
Definition: nn.h:1180
DataType out_dtype
Definition: nn.h:61
DataType out_dtype
Definition: nn.h:315
int axis
Definition: nn.h:525
Array< IndexExpr > dilation
Definition: nn.h:1424
bool transpose_b
Definition: nn.h:1054
bool transpose_a
Definition: nn.h:1053
Attributes used in instance_norm operator.
Definition: nn.h:1330
Array< IndexExpr > dilation
Definition: nn.h:963
Attributes for LRN operator.
Definition: nn.h:1392
Array< IndexExpr > strides
Definition: nn.h:378
Base classes for the Relay IR.
tvm::String out_layout
Definition: nn.h:698
Array< IndexExpr > strides
Definition: nn.h:212
TVM_DECLARE_ATTRS(InstanceNormAttrs, "relay.attrs.InstanceNormAttrs")
Definition: nn.h:1336
Array< IndexExpr > strides
Definition: nn.h:918
bool scale
Definition: nn.h:1334
TVM_DECLARE_ATTRS(DensePackAttrs, "relay.attrs.DensePackAttrs")
Definition: nn.h:1099
TVM_DECLARE_ATTRS(AvgPool3DAttrs, "relay.attrs.AvgPool3DAttrs")
Definition: nn.h:1013
Attributes used in group_norm operator.
Definition: nn.h:1369
bool ceil_mode
Definition: nn.h:742
TVM_DECLARE_ATTRS(PadAttrs, "relay.attrs.PadAttrs")
Definition: nn.h:1247
TObjectRef NullValue()
Create a NodeRef type that represents null.
Definition: attrs.h:84
Attributes used for the padding operator.
Definition: nn.h:1243
TVM_DECLARE_ATTRS(AvgPool2DAttrs, "relay.attrs.AvgPool2DAttrs")
Definition: nn.h:745
bool ceil_mode
Definition: nn.h:923
Reference to PrimExprNode.
Definition: expr.h:112
Array< IndexExpr > padding
Definition: nn.h:454
DataType out_dtype
Definition: nn.h:1114
int axis
Definition: nn.h:1172
TVM_DECLARE_ATTRS(Conv3DAttrs, "relay.attrs.Conv3DAttrs")
Definition: nn.h:317
double rate
Definition: nn.h:1297
Array< IndexExpr > dilation
Definition: nn.h:120
double bias
Definition: nn.h:1395
Array< Integer > axis
Definition: nn.h:1412
Array< IndexExpr > padding
Definition: nn.h:1522
Attributes for sparse_transpose operator.
Definition: nn.h:1150
Array< IndexExpr > dilation
Definition: nn.h:1006
std::string layout
Definition: nn.h:805
TVM_DECLARE_ATTRS(SubPixelAttrs, "relay.attrs.SubPixelAttrs")
Definition: nn.h:1502
int axis
Definition: nn.h:1394
Array< PrimExpr > meta_schedule_original_shape
Definition: nn.h:1118
Array< IndexExpr > strides
Definition: nn.h:610
std::string reduction
Definition: nn.h:1576
int axis
Definition: nn.h:1371
DataType out_dtype
Definition: nn.h:633
tvm::String auto_scheduler_rewritten_layout
Definition: nn.h:1117
tvm::String out_layout
Definition: nn.h:60
Array< IndexExpr > dilation
Definition: nn.h:696
Array< IndexExpr > kernel_size
Definition: nn.h:1157
double epsilon
Definition: nn.h:1372
Array< IndexExpr > strides
Definition: nn.h:536
tvm::String out_layout
Definition: nn.h:385
TVM_DECLARE_ATTRS(PReluAttrs, "relay.attrs.PReluAttrs")
Definition: nn.h:1289
tvm::String data_layout
Definition: nn.h:218
std::string layout
Definition: nn.h:1156
int tile_size
Definition: nn.h:452
Array< IndexExpr > padding
Definition: nn.h:920
bool is_multiply
Definition: nn.h:1523
Array< IndexExpr > dilation
Definition: nn.h:628
double epsilon
Definition: nn.h:1352
Array< IndexExpr > dilation
Definition: nn.h:879
int stride1
Definition: nn.h:1520
Array< IndexExpr > pool_size
Definition: nn.h:877
double pad_value
Definition: nn.h:1550
tvm::String auto_scheduler_rewritten_layout
Definition: nn.h:313
Attributes for L2Normalize operator.
Definition: nn.h:1410
std::string out_layout
Definition: nn.h:543
tvm::String out_layout
Definition: nn.h:312
std::string layout
Definition: nn.h:828
tvm::String pad_mode
Definition: nn.h:1245
DataType out_dtype
Definition: nn.h:1081
Array< Array< IndexExpr > > crops
Definition: nn.h:1564
std::string mode
Definition: nn.h:1500
Array< IndexExpr > kernel_size
Definition: nn.h:377
int groups
Definition: nn.h:382
Attributes used in 1D convolution operators.
Definition: nn.h:51
Array< IndexExpr > padding
Definition: nn.h:964
tvm::String out_layout
Definition: nn.h:784
Attributes for 1D avg pool operator.
Definition: nn.h:916
bool center
Definition: nn.h:1309