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_RELAX_ATTRS_NN_H_
25 #define TVM_RELAX_ATTRS_NN_H_
26 
27 #include <tvm/relax/expr.h>
28 
29 namespace tvm {
30 namespace relax {
31 
33 struct Conv1DAttrs : public AttrsNodeReflAdapter<Conv1DAttrs> {
34  ffi::Array<int64_t> strides;
35  ffi::Array<int64_t> padding;
36  ffi::Array<int64_t> dilation;
37  int groups;
38  ffi::String data_layout;
39  ffi::String kernel_layout;
40  ffi::String out_layout;
42 
43  static void RegisterReflection() {
44  namespace refl = tvm::ffi::reflection;
45  refl::ObjectDef<Conv1DAttrs>()
46  .def_ro("strides", &Conv1DAttrs::strides, "Specifies the strides of the convolution.")
47  .def_ro("padding", &Conv1DAttrs::padding,
48  "If padding is non-zero, then the input is implicitly zero-padded"
49  "Padding support both symmetric and asymmetric as"
50  "one int : same padding used on both sides"
51  "two int : padding width in the order of (left, right)")
52  .def_ro("dilation", &Conv1DAttrs::dilation,
53  "Specifies the dilation rate to use for dilated convolution.")
54  .def_ro("groups", &Conv1DAttrs::groups,
55  "Number of groups to split the input into for grouped convolution. The number of "
56  "input and "
57  "output channels should be divisible by the number of groups.")
58  .def_ro("data_layout", &Conv1DAttrs::data_layout,
59  "Dimension ordering of input data. Can be 'NCW', 'NWC', etc."
60  "'N', 'C', 'W' stands for batch, channel, width"
61  "dimensions respectively. Convolution is applied on the 'W' dimensions.")
62  .def_ro("kernel_layout", &Conv1DAttrs::kernel_layout,
63  "Dimension ordering of weight. Can be 'OIW', 'IOW', etc."
64  "'O', 'I', 'W' stands for num_filter, input_channel, and width"
65  "dimensions respectively.")
66  .def_ro("out_layout", &Conv1DAttrs::out_layout,
67  "Dimension ordering of output. Can be 'NCW', 'NWC', etc."
68  "'N', 'C', 'W' stands for batch, channel, and width"
69  "dimensions respectively. Default to be same as input layout.")
70  .def_ro("out_dtype", &Conv1DAttrs::out_dtype,
71  "Output data type, set to explicit type under mixed precision setting");
72  }
74 }; // struct Conv1dAttrs
75 
77 struct Conv2DAttrs : public AttrsNodeReflAdapter<Conv2DAttrs> {
78  ffi::Array<int64_t> strides;
79  ffi::Array<int64_t> padding;
80  ffi::Array<int64_t> dilation;
81  int groups;
82  ffi::String data_layout;
83  ffi::String kernel_layout;
84  ffi::String out_layout;
86 
87  static void RegisterReflection() {
88  namespace refl = tvm::ffi::reflection;
89  refl::ObjectDef<Conv2DAttrs>()
90  .def_ro("strides", &Conv2DAttrs::strides, "Specifies the strides of the convolution.")
91  .def_ro("padding", &Conv2DAttrs::padding,
92  "If padding is non-zero, then the input is implicitly zero-padded"
93  "Padding support both symmetric and asymmetric as"
94  "one int : same padding used on all sides"
95  "two int : bottom, right will use same padding as top, left"
96  "four int : padding width in the order of (top, left, bottom, right)")
97  .def_ro("dilation", &Conv2DAttrs::dilation,
98  "Specifies the dilation rate to use for dilated convolution.")
99  .def_ro("groups", &Conv2DAttrs::groups,
100  "Number of groups to split the input into for grouped convolution. The number of "
101  "input and "
102  "output channels should be divisible by the number of groups.")
103  .def_ro("data_layout", &Conv2DAttrs::data_layout,
104  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
105  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
106  "dimensions respectively. Convolution is applied on the 'H' and"
107  "'W' dimensions.")
108  .def_ro("kernel_layout", &Conv2DAttrs::kernel_layout,
109  "Dimension ordering of weight. Can be 'OIHW', 'OIHW16o16i', etc."
110  "'O', 'I', 'H', 'W' stands for num_filter, input_channel, height, and width"
111  "dimensions respectively.")
112  .def_ro("out_layout", &Conv2DAttrs::out_layout,
113  "Dimension ordering of output. Can be 'NCHW', 'NHWC', etc."
114  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
115  "dimensions respectively. Default to be same as input layout.")
116  .def_ro("out_dtype", &Conv2DAttrs::out_dtype,
117  "Output data type, set to explicit type under mixed precision setting");
118  }
120 }; // struct Conv2dAttrs
121 
123 struct Conv3DAttrs : public AttrsNodeReflAdapter<Conv3DAttrs> {
124  ffi::Array<int64_t> strides;
125  ffi::Array<int64_t> padding;
126  ffi::Array<int64_t> dilation;
127  int groups;
128  ffi::String data_layout;
129  ffi::String kernel_layout;
130  ffi::String out_layout;
132 
133  static void RegisterReflection() {
134  namespace refl = tvm::ffi::reflection;
135  refl::ObjectDef<Conv3DAttrs>()
136  .def_ro("strides", &Conv3DAttrs::strides, "Specifies the strides of the convolution.")
137  .def_ro(
138  "padding", &Conv3DAttrs::padding,
139  "If padding is non-zero, then the input is implicitly zero-padded"
140  "Padding support both symmetric and asymmetric as"
141  "one int : same padding used on all sides"
142  "two int : bottom, right will use same padding as top, left"
143  "four int : padding width in the order of (forward, back, top, left, bottom, right)")
144  .def_ro("dilation", &Conv3DAttrs::dilation,
145  "Specifies the dilation rate to use for dilated convolution.")
146  .def_ro("groups", &Conv3DAttrs::groups,
147  "Number of groups to split the input into for grouped convolution. The number of "
148  "input and "
149  "output channels should be divisible by the number of groups.")
150  .def_ro("data_layout", &Conv3DAttrs::data_layout,
151  "Dimension ordering of input data. Can be 'NCDHW', 'NDHWC', etc."
152  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
153  "dimensions respectively. Convolution is applied on the 'D', 'H', and"
154  "'W' dimensions.")
155  .def_ro(
156  "kernel_layout", &Conv3DAttrs::kernel_layout,
157  "Dimension ordering of weight. Can be 'OIDHW', 'OIDHW16o16i', etc."
158  "'O', 'I', 'D', 'H', 'W' stands for num_filter, input_channel, depth, height, and width"
159  "dimensions respectively.")
160  .def_ro("out_layout", &Conv3DAttrs::out_layout,
161  "Dimension ordering of output. Can be 'NCDHW', 'NDHWC', etc."
162  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
163  "dimensions respectively. Default to be same as input layout.")
164  .def_ro("out_dtype", &Conv3DAttrs::out_dtype,
165  "Output data type, set to explicit type under mixed precision setting");
166  }
168 }; // struct Conv3dAttrs
169 
171 struct Conv1DTransposeAttrs : public AttrsNodeReflAdapter<Conv1DTransposeAttrs> {
172  ffi::Array<int64_t> strides;
173  ffi::Array<int64_t> padding;
174  ffi::Array<int64_t> output_padding;
175  ffi::Array<int64_t> dilation;
176  int groups;
177  ffi::String data_layout;
178  ffi::String kernel_layout;
179  ffi::String out_layout;
181 
182  static void RegisterReflection() {
183  namespace refl = tvm::ffi::reflection;
184  refl::ObjectDef<Conv1DTransposeAttrs>()
185  .def_ro("strides", &Conv1DTransposeAttrs::strides,
186  "Specifies the strides of the convolution.")
187  .def_ro("padding", &Conv1DTransposeAttrs::padding,
188  "If padding is non-zero, then the input is implicitly zero-padded"
189  "Padding support both symmetric and asymmetric as"
190  "one int : same padding used on both sides"
191  "two int : padding width in the order of (left, right)")
192  .def_ro("output_padding", &Conv1DTransposeAttrs::output_padding,
193  "Used to disambiguate the output shape.")
194  .def_ro("dilation", &Conv1DTransposeAttrs::dilation,
195  "Specifies the dilation rate to use for dilated convolution.")
196  .def_ro("groups", &Conv1DTransposeAttrs::groups,
197  "Number of groups to split the input into for grouped convolution. The number of "
198  "input and "
199  "output channels should be divisible by the number of groups.")
200  .def_ro("data_layout", &Conv1DTransposeAttrs::data_layout,
201  "Dimension ordering of input data. Can be 'NCW', 'NWC', etc."
202  "'N', 'C', 'W' stands for batch, channel, width"
203  "dimensions respectively. Convolution is applied on the 'W' dimensions.")
204  .def_ro("kernel_layout", &Conv1DTransposeAttrs::kernel_layout,
205  "Dimension ordering of weight. Can be 'OIW', 'IOW', etc."
206  "'O', 'I', 'W' stands for num_filter, input_channel, and width"
207  "dimensions respectively.")
208  .def_ro("out_layout", &Conv1DTransposeAttrs::out_layout,
209  "Dimension ordering of output. Can be 'NCW', 'NWC', etc."
210  "'N', 'C', 'W' stands for batch, channel, and width"
211  "dimensions respectively. Default to be same as input layout.")
212  .def_ro("out_dtype", &Conv1DTransposeAttrs::out_dtype,
213  "Output data type, set to explicit type under mixed precision setting");
214  }
215  TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Conv1DTransposeAttrs", Conv1DTransposeAttrs,
216  BaseAttrsNode);
217 }; // struct Conv1DTransposeAttrs
218 
220 struct Conv2DTransposeAttrs : public AttrsNodeReflAdapter<Conv2DTransposeAttrs> {
221  ffi::Array<int64_t> strides;
222  ffi::Array<int64_t> padding;
223  ffi::Array<int64_t> output_padding;
224  ffi::Array<int64_t> dilation;
225  int groups;
226  ffi::String data_layout;
227  ffi::String kernel_layout;
228  ffi::String out_layout;
230 
231  static void RegisterReflection() {
232  namespace refl = tvm::ffi::reflection;
233  refl::ObjectDef<Conv2DTransposeAttrs>()
234  .def_ro("strides", &Conv2DTransposeAttrs::strides,
235  "Specifies the strides of the convolution.")
236  .def_ro("padding", &Conv2DTransposeAttrs::padding,
237  "If padding is non-zero, then the input is implicitly zero-padded"
238  "Padding support both symmetric and asymmetric as"
239  "one int : same padding used on all sides"
240  "two int : bottom, right will use same padding as top, left"
241  "four int : padding width in the order of (top, left, bottom, right)")
242  .def_ro("output_padding", &Conv2DTransposeAttrs::output_padding,
243  "Used to disambiguate the output shape.")
244  .def_ro("dilation", &Conv2DTransposeAttrs::dilation,
245  "Specifies the dilation rate to use for dilated convolution.")
246  .def_ro("groups", &Conv2DTransposeAttrs::groups,
247  "Number of groups to split the input into for grouped convolution. The number of "
248  "input and "
249  "output channels should be divisible by the number of groups.")
250  .def_ro("data_layout", &Conv2DTransposeAttrs::data_layout,
251  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
252  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
253  "dimensions respectively. Convolution is applied on the 'H' and"
254  "'W' dimensions.")
255  .def_ro("kernel_layout", &Conv2DTransposeAttrs::kernel_layout,
256  "Dimension ordering of weight. Can be 'OIHW', 'OIHW16o16i', etc."
257  "'O', 'I', 'H', 'W' stands for num_filter, input_channel, height, and width"
258  "dimensions respectively.")
259  .def_ro("out_layout", &Conv2DTransposeAttrs::out_layout,
260  "Dimension ordering of output. Can be 'NCHW', 'NHWC', etc."
261  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
262  "dimensions respectively. Default to be same as input layout.")
263  .def_ro("out_dtype", &Conv2DTransposeAttrs::out_dtype,
264  "Output data type, set to explicit type under mixed precision setting");
265  }
266  TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Conv2DTransposeAttrs", Conv2DTransposeAttrs,
267  BaseAttrsNode);
268 }; // struct Conv2DTransposeAttrs
269 
271 struct Conv3DTransposeAttrs : public AttrsNodeReflAdapter<Conv3DTransposeAttrs> {
272  ffi::Array<int64_t> strides;
273  ffi::Array<int64_t> padding;
274  ffi::Array<int64_t> output_padding;
275  ffi::Array<int64_t> dilation;
276  int groups;
277  ffi::String data_layout;
278  ffi::String kernel_layout;
279  ffi::String out_layout;
281 
282  static void RegisterReflection() {
283  namespace refl = tvm::ffi::reflection;
284  refl::ObjectDef<Conv3DTransposeAttrs>()
285  .def_ro("strides", &Conv3DTransposeAttrs::strides,
286  "Specifies the strides of the convolution.")
287  .def_ro("padding", &Conv3DTransposeAttrs::padding,
288  "If padding is non-zero, then the input is implicitly zero-padded"
289  "Padding support both symmetric and asymmetric as"
290  "one int : same padding used on all sides"
291  "three int : back/bottom/right will use same padding as front/top/left"
292  "six int : padding width in the order of (front, top, left, back, bottom, right)")
293  .def_ro("output_padding", &Conv3DTransposeAttrs::output_padding,
294  "Used to disambiguate the output shape.")
295  .def_ro("dilation", &Conv3DTransposeAttrs::dilation,
296  "Specifies the dilation rate to use for dilated convolution.")
297  .def_ro("groups", &Conv3DTransposeAttrs::groups,
298  "Number of groups to split the input into for grouped convolution. The number of "
299  "input and "
300  "output channels should be divisible by the number of groups.")
301  .def_ro("data_layout", &Conv3DTransposeAttrs::data_layout,
302  "Dimension ordering of input data. Can be 'NCDHW', 'NDHWC', etc."
303  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
304  "dimensions respectively. Convolution is applied on the 'D', 'H', and"
305  "'W' dimensions.")
306  .def_ro(
307  "kernel_layout", &Conv3DTransposeAttrs::kernel_layout,
308  "Dimension ordering of weight. Can be 'IODHW', etc."
309  "'I', 'O', 'D', 'H', 'W' stands for input_channel, output_channel, depth, height, and "
310  "width"
311  "dimensions respectively.")
312  .def_ro("out_layout", &Conv3DTransposeAttrs::out_layout,
313  "Dimension ordering of output. Can be 'NCDHW', 'NDHWC', etc."
314  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
315  "dimensions respectively. Default to be same as input layout.")
316  .def_ro("out_dtype", &Conv3DTransposeAttrs::out_dtype,
317  "Output data type, set to explicit type under mixed precision setting");
318  }
319  TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Conv3DTransposeAttrs", Conv3DTransposeAttrs,
320  BaseAttrsNode);
321 }; // struct Conv3DTransposeAttrs
322 
324 struct Pool1DAttrs : public AttrsNodeReflAdapter<Pool1DAttrs> {
325  ffi::Array<int64_t> pool_size;
326  ffi::Array<int64_t> strides;
327  ffi::Array<int64_t> padding;
328  ffi::Array<int64_t> dilation;
329  bool ceil_mode;
331  ffi::String layout;
332  ffi::String out_layout;
333 
334  static void RegisterReflection() {
335  namespace refl = tvm::ffi::reflection;
336  refl::ObjectDef<Pool1DAttrs>()
337  .def_ro("pool_size", &Pool1DAttrs::pool_size, "Size of the pooling windows.")
338  .def_ro("strides", &Pool1DAttrs::strides, "Specifies the strides of the convolution.")
339  .def_ro("dilation", &Pool1DAttrs::dilation, "Specifies the dilation of the convolution.")
340  .def_ro("padding", &Pool1DAttrs::padding,
341  "If padding is non-zero, then the input is implicitly zero-padded"
342  "Padding support both symmetric and asymmetric as"
343  "one int : same padding used on all sides"
344  "two int : padding width in the order of (left, right)")
345  .def_ro(
346  "ceil_mode", &Pool1DAttrs::ceil_mode,
347  "A boolean indicating if use ceil or floor to compute the output shape. By using ceil, "
348  "every element in the input tensor will be covered by a sliding window.")
349  .def_ro("count_include_pad", &Pool1DAttrs::count_include_pad,
350  "When true, will include padding to compute the average")
351  .def_ro("layout", &Pool1DAttrs::layout,
352  "Dimension ordering of input data. Can be 'NCW', 'NWC', etc."
353  "'N', 'C', 'W' stands for batch, channel, and width"
354  "dimensions respectively. Pooling is applied on the 'W' dimensions.",
355  refl::DefaultValue("NCW"))
356  .def_ro("out_layout", &Pool1DAttrs::out_layout,
357  "Dimension ordering of output data. Can be 'NCW', 'NWC', etc."
358  "'N', 'C', 'W' stands for batch, channel, and width"
359  "dimensions respectively. Pooling is applied on the 'W' dimensions.");
360  }
362 }; // struct Pool1dAttrs
363 
365 struct Pool2DAttrs : public AttrsNodeReflAdapter<Pool2DAttrs> {
366  ffi::Array<int64_t> pool_size;
367  ffi::Array<int64_t> strides;
368  ffi::Array<int64_t> padding;
369  ffi::Array<int64_t> dilation;
370  bool ceil_mode;
372  ffi::String layout;
373  ffi::String out_layout;
374 
375  static void RegisterReflection() {
376  namespace refl = tvm::ffi::reflection;
377  refl::ObjectDef<Pool2DAttrs>()
378  .def_ro("pool_size", &Pool2DAttrs::pool_size, "Size of the pooling windows.")
379  .def_ro("strides", &Pool2DAttrs::strides, "Specifies the strides of the convolution.")
380  .def_ro("dilation", &Pool2DAttrs::dilation, "Specifies the dilation of the convolution.")
381  .def_ro("padding", &Pool2DAttrs::padding,
382  "If padding is non-zero, then the input is implicitly zero-padded"
383  "Padding support both symmetric and asymmetric as"
384  "one int : same padding used on all sides"
385  "two int : bottom, right will use same padding as top, left"
386  "four int : padding width in the order of (top, left, bottom, right)")
387  .def_ro(
388  "ceil_mode", &Pool2DAttrs::ceil_mode,
389  "A boolean indicating if use ceil or floor to compute the output shape. By using ceil, "
390  "every element in the input tensor will be covered by a sliding window.")
391  .def_ro("count_include_pad", &Pool2DAttrs::count_include_pad,
392  "When true, will include padding to compute the average")
393  .def_ro("layout", &Pool2DAttrs::layout,
394  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
395  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
396  "dimensions respectively. Pooling is applied on the 'H' and"
397  "'W' dimensions.")
398  .def_ro("out_layout", &Pool2DAttrs::out_layout,
399  "Dimension ordering of output data. Can be 'NCHW', 'NHWC', etc."
400  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
401  "dimensions respectively. Pooling is applied on the 'H' and"
402  "'W' dimensions.");
403  }
405 }; // struct Pool2dAttrs
406 
408 struct Pool3DAttrs : public AttrsNodeReflAdapter<Pool3DAttrs> {
409  ffi::Array<int64_t> pool_size;
410  ffi::Array<int64_t> strides;
411  ffi::Array<int64_t> padding;
412  ffi::Array<int64_t> dilation;
413  bool ceil_mode;
415  ffi::String layout;
416  ffi::String out_layout;
417 
418  static void RegisterReflection() {
419  namespace refl = tvm::ffi::reflection;
420  refl::ObjectDef<Pool3DAttrs>()
421  .def_ro("pool_size", &Pool3DAttrs::pool_size, "Size of the pooling windows.")
422  .def_ro("strides", &Pool3DAttrs::strides, "Specifies the strides of the convolution.")
423  .def_ro("dilation", &Pool3DAttrs::dilation, "Specifies the dilation of the convolution.")
424  .def_ro("padding", &Pool3DAttrs::padding,
425  "If padding is non-zero, then the input is implicitly zero-padded"
426  "Padding support both symmetric and asymmetric as"
427  "one int : same padding used on all sides"
428  "three int : back, bottom, right will use same padding as front, top, left"
429  "four int : padding width in the order of (front, top, left, back, bottom, right)")
430  .def_ro(
431  "ceil_mode", &Pool3DAttrs::ceil_mode,
432  "A boolean indicating if use ceil or floor to compute the output shape. By using ceil, "
433  "every element in the input tensor will be covered by a sliding window.")
434  .def_ro("count_include_pad", &Pool3DAttrs::count_include_pad,
435  "When true, will include padding to compute the average")
436  .def_ro("layout", &Pool3DAttrs::layout,
437  "Dimension ordering of input data. Can be 'NCDHW', 'NDHWC', etc."
438  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
439  "dimensions respectively. Pooling is applied on the 'D', 'H' and"
440  "'W' dimensions.")
441  .def_ro("out_layout", &Pool3DAttrs::out_layout,
442  "Dimension ordering of output data. Can be 'NCDHW', 'NDHWC', etc."
443  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
444  "dimensions respectively. Pooling is applied on the 'D', 'H' and"
445  "'W' dimensions.");
446  }
448 }; // struct Pool3dAttrs
449 
451 struct AdaptivePool1DAttrs : public AttrsNodeReflAdapter<AdaptivePool1DAttrs> {
452  ffi::Optional<ffi::Array<int64_t>> output_size;
453  ffi::String layout;
454  ffi::String out_layout;
455 
456  static void RegisterReflection() {
457  namespace refl = tvm::ffi::reflection;
458  refl::ObjectDef<AdaptivePool1DAttrs>()
459  .def_ro("output_size", &AdaptivePool1DAttrs::output_size, "Output width.")
460  .def_ro("layout", &AdaptivePool1DAttrs::layout,
461  "Dimension ordering of input data. Can be 'NCW', 'NWC', etc."
462  "'N', 'C', 'W' stands for batch, channel and width"
463  "dimensions respectively. Pooling is applied on the"
464  "'W' dimensions.")
465  .def_ro("out_layout", &AdaptivePool1DAttrs::out_layout,
466  "Dimension ordering of output data. Can be 'NCW', 'NWC', etc."
467  "'N', 'C', 'W' stands for batch, channel and width"
468  "dimensions respectively. Pooling is applied on the"
469  "'W' dimensions.");
470  }
471  TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.AdaptivePool1DAttrs", AdaptivePool1DAttrs,
472  BaseAttrsNode);
473 }; // struct AdaptivePool1DAttrs
474 
476 struct AdaptivePool2DAttrs : public AttrsNodeReflAdapter<AdaptivePool2DAttrs> {
477  ffi::Optional<ffi::Array<int64_t>> output_size;
478  ffi::String layout;
479  ffi::String out_layout;
480 
481  static void RegisterReflection() {
482  namespace refl = tvm::ffi::reflection;
483  refl::ObjectDef<AdaptivePool2DAttrs>()
484  .def_ro("output_size", &AdaptivePool2DAttrs::output_size, "Output height and width.")
485  .def_ro("layout", &AdaptivePool2DAttrs::layout,
486  "Dimension ordering of input data. Can be 'NCHW', 'NHWC', etc."
487  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
488  "dimensions respectively. Pooling is applied on the 'H' and"
489  "'W' dimensions.")
490  .def_ro("out_layout", &AdaptivePool2DAttrs::out_layout,
491  "Dimension ordering of output data. Can be 'NCHW', 'NHWC', etc."
492  "'N', 'C', 'H', 'W' stands for batch, channel, height, and width"
493  "dimensions respectively. Pooling is applied on the 'H' and"
494  "'W' dimensions.");
495  }
496  TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.AdaptivePool2DAttrs", AdaptivePool2DAttrs,
497  BaseAttrsNode);
498 }; // struct AdaptivePool2DAttrs
499 
501 struct AdaptivePool3DAttrs : public AttrsNodeReflAdapter<AdaptivePool3DAttrs> {
502  ffi::Optional<ffi::Array<int64_t>> output_size;
503  ffi::String layout;
504  ffi::String out_layout;
505 
506  static void RegisterReflection() {
507  namespace refl = tvm::ffi::reflection;
508  refl::ObjectDef<AdaptivePool3DAttrs>()
509  .def_ro("output_size", &AdaptivePool3DAttrs::output_size, "Output depth, height and width.")
510  .def_ro("layout", &AdaptivePool3DAttrs::layout,
511  "Dimension ordering of input data. Can be 'NCDHW', 'NDHWC', etc."
512  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
513  "dimensions respectively. Pooling is applied on 'D', 'H' and"
514  "'W' dimensions.")
515  .def_ro("out_layout", &AdaptivePool3DAttrs::out_layout,
516  "Dimension ordering of output data. Can be 'NCDHW', 'NDHWC', etc."
517  "'N', 'C', 'D', 'H', 'W' stands for batch, channel, depth, height, and width"
518  "dimensions respectively. Pooling is applied on 'D', 'H' and"
519  "'W' dimensions.");
520  }
521  TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.AdaptivePool3DAttrs", AdaptivePool3DAttrs,
522  BaseAttrsNode);
523 }; // struct AdaptivePool3DAttrs
524 
526 struct SoftmaxAttrs : public AttrsNodeReflAdapter<SoftmaxAttrs> {
527  int axis;
528 
529  static void RegisterReflection() {
530  namespace refl = tvm::ffi::reflection;
531  refl::ObjectDef<SoftmaxAttrs>().def_ro("axis", &SoftmaxAttrs::axis,
532  "The axis to sum over when computing softmax.");
533  }
535 };
536 
538 struct LeakyReluAttrs : public AttrsNodeReflAdapter<LeakyReluAttrs> {
539  double alpha;
540 
541  static void RegisterReflection() {
542  namespace refl = tvm::ffi::reflection;
543  refl::ObjectDef<LeakyReluAttrs>().def_ro("alpha", &LeakyReluAttrs::alpha,
544  "The slope of the negative part.");
545  }
547 };
548 
550 struct SoftplusAttrs : public AttrsNodeReflAdapter<SoftplusAttrs> {
551  double beta;
552  double threshold;
553 
554  static void RegisterReflection() {
555  namespace refl = tvm::ffi::reflection;
556  refl::ObjectDef<SoftplusAttrs>()
557  .def_ro("beta", &SoftplusAttrs::beta,
558  "Scaling factor controlling the sharpness of the Softplus transition.")
559  .def_ro("threshold", &SoftplusAttrs::threshold,
560  "Value determining when to use linear approximation for numerical stability.");
561  }
563 };
564 
566 struct PReluAttrs : public AttrsNodeReflAdapter<PReluAttrs> {
567  int axis;
568 
569  static void RegisterReflection() {
570  namespace refl = tvm::ffi::reflection;
571  refl::ObjectDef<PReluAttrs>().def_ro("axis", &PReluAttrs::axis,
572  "The axis along which the alpha values are applied.");
573  }
575 };
576 
578 struct BatchNormAttrs : public AttrsNodeReflAdapter<BatchNormAttrs> {
579  int axis;
580  double epsilon;
581  bool center;
582  bool scale;
583  double momentum;
584  bool training;
585 
586  static void RegisterReflection() {
587  namespace refl = tvm::ffi::reflection;
588  refl::ObjectDef<BatchNormAttrs>()
589  .def_ro("axis", &BatchNormAttrs::axis, "The axis along which the normalization is applied.")
590  .def_ro("epsilon", &BatchNormAttrs::epsilon,
591  "Small float added to variance to avoid dividing by zero")
592  .def_ro("center", &BatchNormAttrs::center,
593  "Indicating if the beta offset will be added to the normalized tensor.")
594  .def_ro("scale", &BatchNormAttrs::scale,
595  "Indicating if the gamma scale will be multiplied.")
596  .def_ro("momentum", &BatchNormAttrs::momentum,
597  "The value used for the moving_mean and moving_var update.")
598  .def_ro("training", &BatchNormAttrs::training,
599  "Whether we are training (i.e., not in eval mode).");
600  }
602 }; // struct BatchNormAttrs
603 
605 struct LayerNormAttrs : public AttrsNodeReflAdapter<LayerNormAttrs> {
606  ffi::Array<Integer> axes;
607  double epsilon;
608  bool center;
609  bool scale;
610 
611  static void RegisterReflection() {
612  namespace refl = tvm::ffi::reflection;
613  refl::ObjectDef<LayerNormAttrs>()
614  .def_ro("axes", &LayerNormAttrs::axes,
615  "The axes that along which the normalization is applied.")
616  .def_ro("epsilon", &LayerNormAttrs::epsilon,
617  "Small float added to variance to avoid dividing by zero")
618  .def_ro("center", &LayerNormAttrs::center,
619  "Indicating if the beta offset will be added to the normalized tensor.")
620  .def_ro("scale", &LayerNormAttrs::scale,
621  "Indicating if the gamma scale will be multiplied.");
622  }
624 }; // struct LayerNormAttrs
625 
627 struct GroupNormAttrs : public AttrsNodeReflAdapter<GroupNormAttrs> {
630  ffi::Array<Integer> axes;
631  double epsilon;
632  bool center;
633  bool scale;
634 
635  static void RegisterReflection() {
636  namespace refl = tvm::ffi::reflection;
637  refl::ObjectDef<GroupNormAttrs>()
638  .def_ro("num_groups", &GroupNormAttrs::num_groups,
639  "The number of groups to separate the channels into.")
640  .def_ro("channel_axis", &GroupNormAttrs::channel_axis,
641  "The axis that represents the channel.")
642  .def_ro(
643  "axes", &GroupNormAttrs::axes,
644  "The axes that along which the normalization is applied (excluding the channel axis).")
645  .def_ro("epsilon", &GroupNormAttrs::epsilon,
646  "Small float added to variance to avoid dividing by zero")
647  .def_ro("center", &GroupNormAttrs::center,
648  "Indicating if the beta offset will be added to the normalized tensor.")
649  .def_ro("scale", &GroupNormAttrs::scale,
650  "Indicating if the gamma scale will be multiplied.");
651  }
653 }; // struct GroupNormAttrs
654 
656 struct InstanceNormAttrs : public AttrsNodeReflAdapter<InstanceNormAttrs> {
658  ffi::Array<Integer> axes;
659  double epsilon;
660  bool center;
661  bool scale;
662 
663  static void RegisterReflection() {
664  namespace refl = tvm::ffi::reflection;
665  refl::ObjectDef<InstanceNormAttrs>()
666  .def_ro("channel_axis", &InstanceNormAttrs::channel_axis,
667  "The axis that represents the channel.")
668  .def_ro("axes", &InstanceNormAttrs::axes,
669  "The axes that along which the normalization is applied.")
670  .def_ro("epsilon", &InstanceNormAttrs::epsilon,
671  "Small float added to variance to avoid dividing by zero")
672  .def_ro("center", &InstanceNormAttrs::center,
673  "Indicating if the beta offset will be added to the normalized tensor.")
674  .def_ro("scale", &InstanceNormAttrs::scale,
675  "Indicating if the gamma scale will be multiplied.");
676  }
677  TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.InstanceNormAttrs", InstanceNormAttrs,
678  BaseAttrsNode);
679 }; // struct InstanceNormAttrs
680 
682 struct RMSNormAttrs : public AttrsNodeReflAdapter<RMSNormAttrs> {
683  ffi::Array<Integer> axes;
684  double epsilon;
685 
686  static void RegisterReflection() {
687  namespace refl = tvm::ffi::reflection;
688  refl::ObjectDef<RMSNormAttrs>()
689  .def_ro("axes", &RMSNormAttrs::axes,
690  "The axes that along which the normalization is applied.")
691  .def_ro("epsilon", &RMSNormAttrs::epsilon,
692  "Small float added to variance to avoid dividing by zero");
693  }
695 }; // struct RMSNormAttrs
696 
698 struct NLLLossAttrs : public AttrsNodeReflAdapter<NLLLossAttrs> {
699  ffi::String reduction;
701 
702  static void RegisterReflection() {
703  namespace refl = tvm::ffi::reflection;
704  refl::ObjectDef<NLLLossAttrs>()
705  .def_ro("reduction", &NLLLossAttrs::reduction,
706  "The reduction method to apply to the output. Can be"
707  "'none', 'mean' or 'sum'.",
708  refl::DefaultValue("mean"))
709  .def_ro("ignore_index", &NLLLossAttrs::ignore_index, "The target value to ignore.");
710  }
712 }; // struct NLLLossAttrs
713 
715 struct DropoutAttrs : public AttrsNodeReflAdapter<DropoutAttrs> {
716  double rate;
717 
718  static void RegisterReflection() {
719  namespace refl = tvm::ffi::reflection;
720  refl::ObjectDef<DropoutAttrs>().def_ro(
721  "rate", &DropoutAttrs::rate,
722  "Fraction of the input that gets dropped out during training time");
723  }
725 }; // struct DropoutAttrs
726 
728 struct AttentionAttrs : public AttrsNodeReflAdapter<AttentionAttrs> {
729  ffi::Optional<FloatImm> scale;
730  ffi::Optional<ffi::String> causal_mask;
731  ffi::Optional<IntImm> window_size;
732 
733  static void RegisterReflection() {
734  namespace refl = tvm::ffi::reflection;
735  refl::ObjectDef<AttentionAttrs>()
736  .def_ro(
737  "scale", &AttentionAttrs::scale,
738  "The custom scale applied before the softmax. The default value is 1 / sqrt(head_dim).")
739  .def_ro("causal_mask", &AttentionAttrs::causal_mask,
740  "The type of the causal mask, i.e. 'TopLeft' and 'BottomRight'.")
741  .def_ro("window_size", &AttentionAttrs::window_size,
742  "The size of the window for sliding-window attention.");
743  }
745 }; // struct AttentionAttrs
746 
748 struct PadAttrs : public AttrsNodeReflAdapter<PadAttrs> {
749  ffi::Array<Integer> pad_width;
750  double pad_value = 0.0;
751  tvm::ffi::String pad_mode;
752 
753  static void RegisterReflection() {
754  namespace refl = tvm::ffi::reflection;
755  refl::ObjectDef<PadAttrs>()
756  .def_ro("pad_width", &PadAttrs::pad_width,
757  "Number of values padded to the edges of each axis, "
758  "in the format of (before_1, after_1, ..., before_N, after_N)")
759  .def_ro("pad_value", &PadAttrs::pad_value, "The value to fill in padded area with",
760  refl::DefaultValue(0.0))
761  .def_ro("pad_mode", &PadAttrs::pad_mode,
762  "Padding type to use. \"constant\" pads with constant_value, "
763  "\"edge\" pads using the edge values of the input array, "
764  "\"reflect\" pads by reflecting values with respect to the edges.",
765  refl::DefaultValue("constant"));
766  }
768 };
769 
771 struct PixelShuffleAttrs : public AttrsNodeReflAdapter<PixelShuffleAttrs> {
773 
774  static void RegisterReflection() {
775  namespace refl = tvm::ffi::reflection;
776  refl::ObjectDef<PixelShuffleAttrs>().def_ro("upscale_factor",
778  "Scale factor for spatial upsampling.");
779  }
780  TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.PixelShuffleAttrs", PixelShuffleAttrs,
781  BaseAttrsNode);
782 };
783 
784 } // namespace relax
785 } // namespace tvm
786 
787 #endif // TVM_RELAX_ATTRS_NN_H_
Adapter for AttrsNode with the new reflection API.
Definition: attrs.h:391
Base class of all attribute class.
Definition: attrs.h:102
Runtime primitive data type.
Definition: data_type.h:45
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition: analyzer.h:37
Attributes for 1d adaptive pool operator.
Definition: nn.h:451
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.AdaptivePool1DAttrs", AdaptivePool1DAttrs, BaseAttrsNode)
ffi::String out_layout
Definition: nn.h:454
ffi::Optional< ffi::Array< int64_t > > output_size
Definition: nn.h:452
ffi::String layout
Definition: nn.h:453
static void RegisterReflection()
Definition: nn.h:456
Attributes for 2d adaptive pool operator.
Definition: nn.h:476
ffi::Optional< ffi::Array< int64_t > > output_size
Definition: nn.h:477
static void RegisterReflection()
Definition: nn.h:481
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.AdaptivePool2DAttrs", AdaptivePool2DAttrs, BaseAttrsNode)
ffi::String out_layout
Definition: nn.h:479
ffi::String layout
Definition: nn.h:478
Attributes for 3d adaptive pool operator.
Definition: nn.h:501
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.AdaptivePool3DAttrs", AdaptivePool3DAttrs, BaseAttrsNode)
ffi::Optional< ffi::Array< int64_t > > output_size
Definition: nn.h:502
static void RegisterReflection()
Definition: nn.h:506
ffi::String layout
Definition: nn.h:503
ffi::String out_layout
Definition: nn.h:504
Attributes used in Attention operator.
Definition: nn.h:728
ffi::Optional< IntImm > window_size
Definition: nn.h:731
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.AttentionAttrs", AttentionAttrs, BaseAttrsNode)
ffi::Optional< FloatImm > scale
Definition: nn.h:729
ffi::Optional< ffi::String > causal_mask
Definition: nn.h:730
static void RegisterReflection()
Definition: nn.h:733
Attributes used in batch_norm operator.
Definition: nn.h:578
bool training
Definition: nn.h:584
bool scale
Definition: nn.h:582
static void RegisterReflection()
Definition: nn.h:586
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.BatchNormAttrs", BatchNormAttrs, BaseAttrsNode)
double epsilon
Definition: nn.h:580
int axis
Definition: nn.h:579
double momentum
Definition: nn.h:583
bool center
Definition: nn.h:581
Attributes used in Conv1d operator.
Definition: nn.h:33
ffi::String out_layout
Definition: nn.h:40
ffi::Array< int64_t > strides
Definition: nn.h:34
ffi::Array< int64_t > dilation
Definition: nn.h:36
int groups
Definition: nn.h:37
ffi::String data_layout
Definition: nn.h:38
static void RegisterReflection()
Definition: nn.h:43
ffi::Array< int64_t > padding
Definition: nn.h:35
DataType out_dtype
Definition: nn.h:41
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Conv1DAttrs", Conv1DAttrs, BaseAttrsNode)
ffi::String kernel_layout
Definition: nn.h:39
Attributes used in Conv1DTranspose operator.
Definition: nn.h:171
ffi::String data_layout
Definition: nn.h:177
static void RegisterReflection()
Definition: nn.h:182
ffi::Array< int64_t > dilation
Definition: nn.h:175
DataType out_dtype
Definition: nn.h:180
ffi::Array< int64_t > output_padding
Definition: nn.h:174
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Conv1DTransposeAttrs", Conv1DTransposeAttrs, BaseAttrsNode)
ffi::String out_layout
Definition: nn.h:179
ffi::Array< int64_t > strides
Definition: nn.h:172
ffi::Array< int64_t > padding
Definition: nn.h:173
int groups
Definition: nn.h:176
ffi::String kernel_layout
Definition: nn.h:178
Attributes used in Conv2d operator.
Definition: nn.h:77
ffi::String out_layout
Definition: nn.h:84
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Conv2DAttrs", Conv2DAttrs, BaseAttrsNode)
ffi::Array< int64_t > strides
Definition: nn.h:78
ffi::Array< int64_t > dilation
Definition: nn.h:80
DataType out_dtype
Definition: nn.h:85
ffi::String kernel_layout
Definition: nn.h:83
static void RegisterReflection()
Definition: nn.h:87
int groups
Definition: nn.h:81
ffi::String data_layout
Definition: nn.h:82
ffi::Array< int64_t > padding
Definition: nn.h:79
Attributes used in Conv2d operator.
Definition: nn.h:220
ffi::String kernel_layout
Definition: nn.h:227
ffi::Array< int64_t > dilation
Definition: nn.h:224
ffi::String data_layout
Definition: nn.h:226
ffi::Array< int64_t > padding
Definition: nn.h:222
int groups
Definition: nn.h:225
ffi::Array< int64_t > strides
Definition: nn.h:221
ffi::Array< int64_t > output_padding
Definition: nn.h:223
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Conv2DTransposeAttrs", Conv2DTransposeAttrs, BaseAttrsNode)
ffi::String out_layout
Definition: nn.h:228
static void RegisterReflection()
Definition: nn.h:231
DataType out_dtype
Definition: nn.h:229
Attributes used in Conv3d operator.
Definition: nn.h:123
ffi::String kernel_layout
Definition: nn.h:129
ffi::String out_layout
Definition: nn.h:130
ffi::Array< int64_t > strides
Definition: nn.h:124
static void RegisterReflection()
Definition: nn.h:133
ffi::Array< int64_t > dilation
Definition: nn.h:126
DataType out_dtype
Definition: nn.h:131
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Conv3DAttrs", Conv3DAttrs, BaseAttrsNode)
ffi::String data_layout
Definition: nn.h:128
ffi::Array< int64_t > padding
Definition: nn.h:125
int groups
Definition: nn.h:127
Attributes used in Conv3dTranspose operator.
Definition: nn.h:271
ffi::String out_layout
Definition: nn.h:279
ffi::Array< int64_t > padding
Definition: nn.h:273
ffi::Array< int64_t > strides
Definition: nn.h:272
ffi::Array< int64_t > dilation
Definition: nn.h:275
int groups
Definition: nn.h:276
static void RegisterReflection()
Definition: nn.h:282
DataType out_dtype
Definition: nn.h:280
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Conv3DTransposeAttrs", Conv3DTransposeAttrs, BaseAttrsNode)
ffi::String data_layout
Definition: nn.h:277
ffi::String kernel_layout
Definition: nn.h:278
ffi::Array< int64_t > output_padding
Definition: nn.h:274
Attributes used in dropout operator.
Definition: nn.h:715
double rate
Definition: nn.h:716
static void RegisterReflection()
Definition: nn.h:718
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.DropoutAttrs", DropoutAttrs, BaseAttrsNode)
Attributes used in group_norm operator.
Definition: nn.h:627
ffi::Array< Integer > axes
Definition: nn.h:630
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.GroupNormAttrs", GroupNormAttrs, BaseAttrsNode)
int num_groups
Definition: nn.h:628
int channel_axis
Definition: nn.h:629
double epsilon
Definition: nn.h:631
bool center
Definition: nn.h:632
static void RegisterReflection()
Definition: nn.h:635
bool scale
Definition: nn.h:633
Attributes used in instance_norm operator.
Definition: nn.h:656
bool center
Definition: nn.h:660
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.InstanceNormAttrs", InstanceNormAttrs, BaseAttrsNode)
double epsilon
Definition: nn.h:659
bool scale
Definition: nn.h:661
ffi::Array< Integer > axes
Definition: nn.h:658
static void RegisterReflection()
Definition: nn.h:663
int channel_axis
Definition: nn.h:657
Attributes used in layer_norm operator.
Definition: nn.h:605
ffi::Array< Integer > axes
Definition: nn.h:606
bool scale
Definition: nn.h:609
static void RegisterReflection()
Definition: nn.h:611
bool center
Definition: nn.h:608
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.LayerNormAttrs", LayerNormAttrs, BaseAttrsNode)
double epsilon
Definition: nn.h:607
Attributes used in softmax operators.
Definition: nn.h:538
static void RegisterReflection()
Definition: nn.h:541
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.LeakyReluAttrs", LeakyReluAttrs, BaseAttrsNode)
double alpha
Definition: nn.h:539
Attributes used in nll_loss operator.
Definition: nn.h:698
static void RegisterReflection()
Definition: nn.h:702
ffi::String reduction
Definition: nn.h:699
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.NLLLossAttrs", NLLLossAttrs, BaseAttrsNode)
int ignore_index
Definition: nn.h:700
Attributes used in PReLU operator.
Definition: nn.h:566
static void RegisterReflection()
Definition: nn.h:569
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.PReluAttrs", PReluAttrs, BaseAttrsNode)
int axis
Definition: nn.h:567
Attributes used for the padding operator.
Definition: nn.h:748
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.PadAttrs", PadAttrs, BaseAttrsNode)
ffi::Array< Integer > pad_width
Definition: nn.h:749
tvm::ffi::String pad_mode
Definition: nn.h:751
double pad_value
Definition: nn.h:750
static void RegisterReflection()
Definition: nn.h:753
Attributes used for the pixel shuffle operator.
Definition: nn.h:771
int upscale_factor
Definition: nn.h:772
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.PixelShuffleAttrs", PixelShuffleAttrs, BaseAttrsNode)
static void RegisterReflection()
Definition: nn.h:774
Attributes used in max_pool1d and avg_pool1d operator.
Definition: nn.h:324
ffi::Array< int64_t > strides
Definition: nn.h:326
ffi::Array< int64_t > dilation
Definition: nn.h:328
static void RegisterReflection()
Definition: nn.h:334
ffi::Array< int64_t > pool_size
Definition: nn.h:325
ffi::String layout
Definition: nn.h:331
ffi::Array< int64_t > padding
Definition: nn.h:327
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Pool1DAttrs", Pool1DAttrs, BaseAttrsNode)
bool count_include_pad
Definition: nn.h:330
ffi::String out_layout
Definition: nn.h:332
bool ceil_mode
Definition: nn.h:329
Attributes used in max_pool2d and avg_pool2d operator.
Definition: nn.h:365
ffi::Array< int64_t > pool_size
Definition: nn.h:366
static void RegisterReflection()
Definition: nn.h:375
bool count_include_pad
Definition: nn.h:371
ffi::Array< int64_t > dilation
Definition: nn.h:369
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Pool2DAttrs", Pool2DAttrs, BaseAttrsNode)
ffi::String out_layout
Definition: nn.h:373
ffi::Array< int64_t > padding
Definition: nn.h:368
bool ceil_mode
Definition: nn.h:370
ffi::Array< int64_t > strides
Definition: nn.h:367
ffi::String layout
Definition: nn.h:372
Attributes used in max_pool3d and avg_pool3d operator.
Definition: nn.h:408
ffi::Array< int64_t > strides
Definition: nn.h:410
bool ceil_mode
Definition: nn.h:413
ffi::String out_layout
Definition: nn.h:416
ffi::String layout
Definition: nn.h:415
static void RegisterReflection()
Definition: nn.h:418
bool count_include_pad
Definition: nn.h:414
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.Pool3DAttrs", Pool3DAttrs, BaseAttrsNode)
ffi::Array< int64_t > dilation
Definition: nn.h:412
ffi::Array< int64_t > padding
Definition: nn.h:411
ffi::Array< int64_t > pool_size
Definition: nn.h:409
Attributes used in rms_norm operator.
Definition: nn.h:682
ffi::Array< Integer > axes
Definition: nn.h:683
double epsilon
Definition: nn.h:684
static void RegisterReflection()
Definition: nn.h:686
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.RMSNormAttrs", RMSNormAttrs, BaseAttrsNode)
Attributes used in softmax operators.
Definition: nn.h:526
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.SoftmaxAttrs", SoftmaxAttrs, BaseAttrsNode)
int axis
Definition: nn.h:527
static void RegisterReflection()
Definition: nn.h:529
Attributes used in softplus operators.
Definition: nn.h:550
double threshold
Definition: nn.h:552
double beta
Definition: nn.h:551
TVM_FFI_DECLARE_OBJECT_INFO_FINAL("relax.attrs.SoftplusAttrs", SoftplusAttrs, BaseAttrsNode)
static void RegisterReflection()
Definition: nn.h:554