torch-rb 0.2.0 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,21 +6,49 @@ module Torch
6
6
 
7
7
  attr_reader :dataset
8
8
 
9
- def initialize(dataset, batch_size: 1)
9
+ def initialize(dataset, batch_size: 1, shuffle: false)
10
10
  @dataset = dataset
11
11
  @batch_size = batch_size
12
+ @shuffle = shuffle
12
13
  end
13
14
 
14
15
  def each
15
- size.times do |i|
16
- start_index = i * @batch_size
17
- yield @dataset[start_index...(start_index + @batch_size)]
16
+ # try to keep the random number generator in sync with Python
17
+ # this makes it easy to compare results
18
+ base_seed = Torch.empty([], dtype: :int64).random!.item
19
+
20
+ indexes =
21
+ if @shuffle
22
+ Torch.randperm(@dataset.size).to_a
23
+ else
24
+ @dataset.size.times
25
+ end
26
+
27
+ indexes.each_slice(@batch_size) do |idx|
28
+ batch = idx.map { |i| @dataset[i] }
29
+ yield collate(batch)
18
30
  end
19
31
  end
20
32
 
21
33
  def size
22
34
  (@dataset.size / @batch_size.to_f).ceil
23
35
  end
36
+
37
+ private
38
+
39
+ def collate(batch)
40
+ elem = batch[0]
41
+ case elem
42
+ when Tensor
43
+ Torch.stack(batch, 0)
44
+ when Integer
45
+ Torch.tensor(batch)
46
+ when Array
47
+ batch.transpose.map { |v| collate(v) }
48
+ else
49
+ raise NotImpelmentYet
50
+ end
51
+ end
24
52
  end
25
53
  end
26
54
  end
@@ -0,0 +1,8 @@
1
+ module Torch
2
+ module Utils
3
+ module Data
4
+ class Dataset
5
+ end
6
+ end
7
+ end
8
+ end
@@ -1,7 +1,7 @@
1
1
  module Torch
2
2
  module Utils
3
3
  module Data
4
- class TensorDataset
4
+ class TensorDataset < Dataset
5
5
  def initialize(*tensors)
6
6
  unless tensors.all? { |t| t.size(0) == tensors[0].size(0) }
7
7
  raise Error, "Tensors must all have same dim 0 size"
@@ -1,3 +1,3 @@
1
1
  module Torch
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: torch-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-23 00:00:00.000000000 Z
11
+ date: 2020-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rice
@@ -95,19 +95,19 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: npy
98
+ name: torchvision
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 0.1.1
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 0.1.1
111
111
  description:
112
112
  email: andrew@chartkick.com
113
113
  executables: []
@@ -120,17 +120,10 @@ files:
120
120
  - README.md
121
121
  - ext/torch/ext.cpp
122
122
  - ext/torch/extconf.rb
123
- - ext/torch/nn_functions.cpp
124
- - ext/torch/nn_functions.hpp
125
123
  - ext/torch/templates.cpp
126
124
  - ext/torch/templates.hpp
127
- - ext/torch/tensor_functions.cpp
128
- - ext/torch/tensor_functions.hpp
129
- - ext/torch/torch_functions.cpp
130
- - ext/torch/torch_functions.hpp
131
125
  - lib/torch-rb.rb
132
126
  - lib/torch.rb
133
- - lib/torch/ext.bundle
134
127
  - lib/torch/hub.rb
135
128
  - lib/torch/inspector.rb
136
129
  - lib/torch/native/dispatcher.rb
@@ -265,9 +258,9 @@ files:
265
258
  - lib/torch/optim/rmsprop.rb
266
259
  - lib/torch/optim/rprop.rb
267
260
  - lib/torch/optim/sgd.rb
268
- - lib/torch/random.rb
269
261
  - lib/torch/tensor.rb
270
262
  - lib/torch/utils/data/data_loader.rb
263
+ - lib/torch/utils/data/dataset.rb
271
264
  - lib/torch/utils/data/tensor_dataset.rb
272
265
  - lib/torch/version.rb
273
266
  homepage: https://github.com/ankane/torch.rb
@@ -1,560 +0,0 @@
1
- // generated by rake generate:functions
2
- // do not edit by hand
3
-
4
- #include <torch/torch.h>
5
- #include <rice/Module.hpp>
6
- #include "templates.hpp"
7
-
8
- void add_nn_functions(Module m) {
9
- m
10
- .define_singleton_method(
11
- "_adaptive_avg_pool2d",
12
- *[](const Tensor &self, IntArrayRef output_size) {
13
- return torch::adaptive_avg_pool2d(self, output_size);
14
- })
15
- .define_singleton_method(
16
- "_adaptive_avg_pool2d_out",
17
- *[](const Tensor &self, IntArrayRef output_size, Tensor &out) {
18
- return torch::adaptive_avg_pool2d_out(out, self, output_size);
19
- })
20
- .define_singleton_method(
21
- "_adaptive_avg_pool3d",
22
- *[](const Tensor &self, IntArrayRef output_size) {
23
- return torch::adaptive_avg_pool3d(self, output_size);
24
- })
25
- .define_singleton_method(
26
- "_adaptive_avg_pool3d_out",
27
- *[](const Tensor &self, IntArrayRef output_size, Tensor &out) {
28
- return torch::adaptive_avg_pool3d_out(out, self, output_size);
29
- })
30
- .define_singleton_method(
31
- "_adaptive_max_pool2d",
32
- *[](const Tensor &self, IntArrayRef output_size) {
33
- return wrap(torch::adaptive_max_pool2d(self, output_size));
34
- })
35
- .define_singleton_method(
36
- "_adaptive_max_pool2d_out",
37
- *[](const Tensor &self, IntArrayRef output_size, Tensor &out, Tensor &indices) {
38
- return wrap(torch::adaptive_max_pool2d_out(out, indices, self, output_size));
39
- })
40
- .define_singleton_method(
41
- "_adaptive_max_pool3d",
42
- *[](const Tensor &self, IntArrayRef output_size) {
43
- return wrap(torch::adaptive_max_pool3d(self, output_size));
44
- })
45
- .define_singleton_method(
46
- "_adaptive_max_pool3d_out",
47
- *[](const Tensor &self, IntArrayRef output_size, Tensor &out, Tensor &indices) {
48
- return wrap(torch::adaptive_max_pool3d_out(out, indices, self, output_size));
49
- })
50
- .define_singleton_method(
51
- "_avg_pool2d",
52
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef stride, IntArrayRef padding, bool ceil_mode, bool count_include_pad) {
53
- return torch::avg_pool2d(self, kernel_size, stride, padding, ceil_mode, count_include_pad);
54
- })
55
- .define_singleton_method(
56
- "_avg_pool2d_divisor_override",
57
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef stride, IntArrayRef padding, bool ceil_mode, bool count_include_pad, int64_t divisor_override) {
58
- return torch::avg_pool2d(self, kernel_size, stride, padding, ceil_mode, count_include_pad, divisor_override);
59
- })
60
- .define_singleton_method(
61
- "_avg_pool3d",
62
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef stride, IntArrayRef padding, bool ceil_mode, bool count_include_pad) {
63
- return torch::avg_pool3d(self, kernel_size, stride, padding, ceil_mode, count_include_pad);
64
- })
65
- .define_singleton_method(
66
- "_avg_pool3d_divisor_override",
67
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef stride, IntArrayRef padding, bool ceil_mode, bool count_include_pad, int64_t divisor_override) {
68
- return torch::avg_pool3d(self, kernel_size, stride, padding, ceil_mode, count_include_pad, divisor_override);
69
- })
70
- .define_singleton_method(
71
- "_binary_cross_entropy",
72
- *[](const Tensor &self, const Tensor &target, OptionalTensor weight, MyReduction reduction) {
73
- return torch::binary_cross_entropy(self, target, weight, reduction);
74
- })
75
- .define_singleton_method(
76
- "_binary_cross_entropy_out",
77
- *[](const Tensor &self, const Tensor &target, OptionalTensor weight, MyReduction reduction, Tensor &out) {
78
- return torch::binary_cross_entropy_out(out, self, target, weight, reduction);
79
- })
80
- .define_singleton_method(
81
- "_col2im",
82
- *[](const Tensor &self, IntArrayRef output_size, IntArrayRef kernel_size, IntArrayRef dilation, IntArrayRef padding, IntArrayRef stride) {
83
- return torch::col2im(self, output_size, kernel_size, dilation, padding, stride);
84
- })
85
- .define_singleton_method(
86
- "_col2im_out",
87
- *[](const Tensor &self, IntArrayRef output_size, IntArrayRef kernel_size, IntArrayRef dilation, IntArrayRef padding, IntArrayRef stride, Tensor &out) {
88
- return torch::col2im_out(out, self, output_size, kernel_size, dilation, padding, stride);
89
- })
90
- .define_singleton_method(
91
- "_elu",
92
- *[](const Tensor &self, Scalar alpha, Scalar scale, Scalar input_scale) {
93
- return torch::elu(self, alpha, scale, input_scale);
94
- })
95
- .define_singleton_method(
96
- "_elu_",
97
- *[](Tensor &self, Scalar alpha, Scalar scale, Scalar input_scale) {
98
- return torch::elu_(self, alpha, scale, input_scale);
99
- })
100
- .define_singleton_method(
101
- "_elu_out",
102
- *[](const Tensor &self, Scalar alpha, Scalar scale, Scalar input_scale, Tensor &out) {
103
- return torch::elu_out(out, self, alpha, scale, input_scale);
104
- })
105
- .define_singleton_method(
106
- "_fractional_max_pool2d",
107
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef output_size, const Tensor &random_samples) {
108
- return wrap(torch::fractional_max_pool2d(self, kernel_size, output_size, random_samples));
109
- })
110
- .define_singleton_method(
111
- "_fractional_max_pool2d_output",
112
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef output_size, const Tensor &random_samples, Tensor &output, Tensor &indices) {
113
- return wrap(torch::fractional_max_pool2d_out(output, indices, self, kernel_size, output_size, random_samples));
114
- })
115
- .define_singleton_method(
116
- "_fractional_max_pool3d",
117
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef output_size, const Tensor &random_samples) {
118
- return wrap(torch::fractional_max_pool3d(self, kernel_size, output_size, random_samples));
119
- })
120
- .define_singleton_method(
121
- "_fractional_max_pool3d_output",
122
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef output_size, const Tensor &random_samples, Tensor &output, Tensor &indices) {
123
- return wrap(torch::fractional_max_pool3d_out(output, indices, self, kernel_size, output_size, random_samples));
124
- })
125
- .define_singleton_method(
126
- "_gelu",
127
- *[](const Tensor &self) {
128
- return torch::gelu(self);
129
- })
130
- .define_singleton_method(
131
- "_glu",
132
- *[](const Tensor &self, int64_t dim) {
133
- return torch::glu(self, dim);
134
- })
135
- .define_singleton_method(
136
- "_glu_out",
137
- *[](const Tensor &self, int64_t dim, Tensor &out) {
138
- return torch::glu_out(out, self, dim);
139
- })
140
- .define_singleton_method(
141
- "_hardsigmoid",
142
- *[](const Tensor &self) {
143
- return torch::hardsigmoid(self);
144
- })
145
- .define_singleton_method(
146
- "_hardsigmoid_",
147
- *[](Tensor &self) {
148
- return torch::hardsigmoid_(self);
149
- })
150
- .define_singleton_method(
151
- "_hardsigmoid_out",
152
- *[](const Tensor &self, Tensor &out) {
153
- return torch::hardsigmoid_out(out, self);
154
- })
155
- .define_singleton_method(
156
- "_hardtanh",
157
- *[](const Tensor &self, Scalar min_val, Scalar max_val) {
158
- return torch::hardtanh(self, min_val, max_val);
159
- })
160
- .define_singleton_method(
161
- "_hardtanh_",
162
- *[](Tensor &self, Scalar min_val, Scalar max_val) {
163
- return torch::hardtanh_(self, min_val, max_val);
164
- })
165
- .define_singleton_method(
166
- "_hardtanh_out",
167
- *[](const Tensor &self, Scalar min_val, Scalar max_val, Tensor &out) {
168
- return torch::hardtanh_out(out, self, min_val, max_val);
169
- })
170
- .define_singleton_method(
171
- "_im2col",
172
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef dilation, IntArrayRef padding, IntArrayRef stride) {
173
- return torch::im2col(self, kernel_size, dilation, padding, stride);
174
- })
175
- .define_singleton_method(
176
- "_im2col_out",
177
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef dilation, IntArrayRef padding, IntArrayRef stride, Tensor &out) {
178
- return torch::im2col_out(out, self, kernel_size, dilation, padding, stride);
179
- })
180
- .define_singleton_method(
181
- "_l1_loss",
182
- *[](const Tensor &self, const Tensor &target, MyReduction reduction) {
183
- return torch::l1_loss(self, target, reduction);
184
- })
185
- .define_singleton_method(
186
- "_l1_loss_out",
187
- *[](const Tensor &self, const Tensor &target, MyReduction reduction, Tensor &out) {
188
- return torch::l1_loss_out(out, self, target, reduction);
189
- })
190
- .define_singleton_method(
191
- "_leaky_relu",
192
- *[](const Tensor &self, Scalar negative_slope) {
193
- return torch::leaky_relu(self, negative_slope);
194
- })
195
- .define_singleton_method(
196
- "_leaky_relu_",
197
- *[](Tensor &self, Scalar negative_slope) {
198
- return torch::leaky_relu_(self, negative_slope);
199
- })
200
- .define_singleton_method(
201
- "_leaky_relu_out",
202
- *[](const Tensor &self, Scalar negative_slope, Tensor &out) {
203
- return torch::leaky_relu_out(out, self, negative_slope);
204
- })
205
- .define_singleton_method(
206
- "_linear",
207
- *[](const Tensor &input, const Tensor &weight, OptionalTensor bias) {
208
- return torch::linear(input, weight, bias);
209
- })
210
- .define_singleton_method(
211
- "_log_sigmoid",
212
- *[](const Tensor &self) {
213
- return torch::log_sigmoid(self);
214
- })
215
- .define_singleton_method(
216
- "_log_sigmoid_forward",
217
- *[](const Tensor &self) {
218
- return wrap(torch::log_sigmoid_forward(self));
219
- })
220
- .define_singleton_method(
221
- "_log_sigmoid_forward_output",
222
- *[](const Tensor &self, Tensor &output, Tensor &buffer) {
223
- return wrap(torch::log_sigmoid_forward_out(output, buffer, self));
224
- })
225
- .define_singleton_method(
226
- "_log_sigmoid_out",
227
- *[](const Tensor &self, Tensor &out) {
228
- return torch::log_sigmoid_out(out, self);
229
- })
230
- .define_singleton_method(
231
- "_max_pool2d_with_indices",
232
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef stride, IntArrayRef padding, IntArrayRef dilation, bool ceil_mode) {
233
- return wrap(torch::max_pool2d_with_indices(self, kernel_size, stride, padding, dilation, ceil_mode));
234
- })
235
- .define_singleton_method(
236
- "_max_pool2d_with_indices_out",
237
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef stride, IntArrayRef padding, IntArrayRef dilation, bool ceil_mode, Tensor &out, Tensor &indices) {
238
- return wrap(torch::max_pool2d_with_indices_out(out, indices, self, kernel_size, stride, padding, dilation, ceil_mode));
239
- })
240
- .define_singleton_method(
241
- "_max_pool3d_with_indices",
242
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef stride, IntArrayRef padding, IntArrayRef dilation, bool ceil_mode) {
243
- return wrap(torch::max_pool3d_with_indices(self, kernel_size, stride, padding, dilation, ceil_mode));
244
- })
245
- .define_singleton_method(
246
- "_max_pool3d_with_indices_out",
247
- *[](const Tensor &self, IntArrayRef kernel_size, IntArrayRef stride, IntArrayRef padding, IntArrayRef dilation, bool ceil_mode, Tensor &out, Tensor &indices) {
248
- return wrap(torch::max_pool3d_with_indices_out(out, indices, self, kernel_size, stride, padding, dilation, ceil_mode));
249
- })
250
- .define_singleton_method(
251
- "_max_unpool2d",
252
- *[](const Tensor &self, const Tensor &indices, IntArrayRef output_size) {
253
- return torch::max_unpool2d(self, indices, output_size);
254
- })
255
- .define_singleton_method(
256
- "_max_unpool2d_out",
257
- *[](const Tensor &self, const Tensor &indices, IntArrayRef output_size, Tensor &out) {
258
- return torch::max_unpool2d_out(out, self, indices, output_size);
259
- })
260
- .define_singleton_method(
261
- "_max_unpool3d",
262
- *[](const Tensor &self, const Tensor &indices, IntArrayRef output_size, IntArrayRef stride, IntArrayRef padding) {
263
- return torch::max_unpool3d(self, indices, output_size, stride, padding);
264
- })
265
- .define_singleton_method(
266
- "_max_unpool3d_out",
267
- *[](const Tensor &self, const Tensor &indices, IntArrayRef output_size, IntArrayRef stride, IntArrayRef padding, Tensor &out) {
268
- return torch::max_unpool3d_out(out, self, indices, output_size, stride, padding);
269
- })
270
- .define_singleton_method(
271
- "_mkldnn_linear",
272
- *[](const Tensor &input, const Tensor &weight, OptionalTensor bias) {
273
- return torch::mkldnn_linear(input, weight, bias);
274
- })
275
- .define_singleton_method(
276
- "_mkldnn_reorder_conv2d_weight",
277
- *[](const Tensor &self, IntArrayRef padding, IntArrayRef stride, IntArrayRef dilation, int64_t groups) {
278
- return torch::mkldnn_reorder_conv2d_weight(self, padding, stride, dilation, groups);
279
- })
280
- .define_singleton_method(
281
- "_mse_loss",
282
- *[](const Tensor &self, const Tensor &target, MyReduction reduction) {
283
- return torch::mse_loss(self, target, reduction);
284
- })
285
- .define_singleton_method(
286
- "_mse_loss_out",
287
- *[](const Tensor &self, const Tensor &target, MyReduction reduction, Tensor &out) {
288
- return torch::mse_loss_out(out, self, target, reduction);
289
- })
290
- .define_singleton_method(
291
- "_multi_margin_loss",
292
- *[](const Tensor &self, const Tensor &target, Scalar p, Scalar margin, OptionalTensor weight, MyReduction reduction) {
293
- return torch::multi_margin_loss(self, target, p, margin, weight, reduction);
294
- })
295
- .define_singleton_method(
296
- "_multi_margin_loss_out",
297
- *[](const Tensor &self, const Tensor &target, Scalar p, Scalar margin, OptionalTensor weight, MyReduction reduction, Tensor &out) {
298
- return torch::multi_margin_loss_out(out, self, target, p, margin, weight, reduction);
299
- })
300
- .define_singleton_method(
301
- "_multilabel_margin_loss",
302
- *[](const Tensor &self, const Tensor &target, MyReduction reduction) {
303
- return torch::multilabel_margin_loss(self, target, reduction);
304
- })
305
- .define_singleton_method(
306
- "_multilabel_margin_loss_forward",
307
- *[](const Tensor &self, const Tensor &target, MyReduction reduction) {
308
- return wrap(torch::multilabel_margin_loss_forward(self, target, reduction));
309
- })
310
- .define_singleton_method(
311
- "_multilabel_margin_loss_forward_output",
312
- *[](const Tensor &self, const Tensor &target, MyReduction reduction, Tensor &output, Tensor &is_target) {
313
- return wrap(torch::multilabel_margin_loss_forward_out(output, is_target, self, target, reduction));
314
- })
315
- .define_singleton_method(
316
- "_multilabel_margin_loss_out",
317
- *[](const Tensor &self, const Tensor &target, MyReduction reduction, Tensor &out) {
318
- return torch::multilabel_margin_loss_out(out, self, target, reduction);
319
- })
320
- .define_singleton_method(
321
- "_nll_loss",
322
- *[](const Tensor &self, const Tensor &target, OptionalTensor weight, MyReduction reduction, int64_t ignore_index) {
323
- return torch::nll_loss(self, target, weight, reduction, ignore_index);
324
- })
325
- .define_singleton_method(
326
- "_nll_loss2d",
327
- *[](const Tensor &self, const Tensor &target, OptionalTensor weight, MyReduction reduction, int64_t ignore_index) {
328
- return torch::nll_loss2d(self, target, weight, reduction, ignore_index);
329
- })
330
- .define_singleton_method(
331
- "_nll_loss2d_forward",
332
- *[](const Tensor &self, const Tensor &target, OptionalTensor weight, MyReduction reduction, int64_t ignore_index) {
333
- return wrap(torch::nll_loss2d_forward(self, target, weight, reduction, ignore_index));
334
- })
335
- .define_singleton_method(
336
- "_nll_loss2d_forward_output",
337
- *[](const Tensor &self, const Tensor &target, OptionalTensor weight, MyReduction reduction, int64_t ignore_index, Tensor &output, Tensor &total_weight) {
338
- return wrap(torch::nll_loss2d_forward_out(output, total_weight, self, target, weight, reduction, ignore_index));
339
- })
340
- .define_singleton_method(
341
- "_nll_loss2d_out",
342
- *[](const Tensor &self, const Tensor &target, OptionalTensor weight, MyReduction reduction, int64_t ignore_index, Tensor &out) {
343
- return torch::nll_loss2d_out(out, self, target, weight, reduction, ignore_index);
344
- })
345
- .define_singleton_method(
346
- "_nll_loss_forward",
347
- *[](const Tensor &self, const Tensor &target, OptionalTensor weight, MyReduction reduction, int64_t ignore_index) {
348
- return wrap(torch::nll_loss_forward(self, target, weight, reduction, ignore_index));
349
- })
350
- .define_singleton_method(
351
- "_nll_loss_forward_output",
352
- *[](const Tensor &self, const Tensor &target, OptionalTensor weight, MyReduction reduction, int64_t ignore_index, Tensor &output, Tensor &total_weight) {
353
- return wrap(torch::nll_loss_forward_out(output, total_weight, self, target, weight, reduction, ignore_index));
354
- })
355
- .define_singleton_method(
356
- "_nll_loss_out",
357
- *[](const Tensor &self, const Tensor &target, OptionalTensor weight, MyReduction reduction, int64_t ignore_index, Tensor &out) {
358
- return torch::nll_loss_out(out, self, target, weight, reduction, ignore_index);
359
- })
360
- .define_singleton_method(
361
- "_one_hot",
362
- *[](const Tensor &self, int64_t num_classes) {
363
- return torch::one_hot(self, num_classes);
364
- })
365
- .define_singleton_method(
366
- "_reflection_pad1d",
367
- *[](const Tensor &self, IntArrayRef padding) {
368
- return torch::reflection_pad1d(self, padding);
369
- })
370
- .define_singleton_method(
371
- "_reflection_pad1d_out",
372
- *[](const Tensor &self, IntArrayRef padding, Tensor &out) {
373
- return torch::reflection_pad1d_out(out, self, padding);
374
- })
375
- .define_singleton_method(
376
- "_reflection_pad2d",
377
- *[](const Tensor &self, IntArrayRef padding) {
378
- return torch::reflection_pad2d(self, padding);
379
- })
380
- .define_singleton_method(
381
- "_reflection_pad2d_out",
382
- *[](const Tensor &self, IntArrayRef padding, Tensor &out) {
383
- return torch::reflection_pad2d_out(out, self, padding);
384
- })
385
- .define_singleton_method(
386
- "_replication_pad1d",
387
- *[](const Tensor &self, IntArrayRef padding) {
388
- return torch::replication_pad1d(self, padding);
389
- })
390
- .define_singleton_method(
391
- "_replication_pad1d_out",
392
- *[](const Tensor &self, IntArrayRef padding, Tensor &out) {
393
- return torch::replication_pad1d_out(out, self, padding);
394
- })
395
- .define_singleton_method(
396
- "_replication_pad2d",
397
- *[](const Tensor &self, IntArrayRef padding) {
398
- return torch::replication_pad2d(self, padding);
399
- })
400
- .define_singleton_method(
401
- "_replication_pad2d_out",
402
- *[](const Tensor &self, IntArrayRef padding, Tensor &out) {
403
- return torch::replication_pad2d_out(out, self, padding);
404
- })
405
- .define_singleton_method(
406
- "_replication_pad3d",
407
- *[](const Tensor &self, IntArrayRef padding) {
408
- return torch::replication_pad3d(self, padding);
409
- })
410
- .define_singleton_method(
411
- "_replication_pad3d_out",
412
- *[](const Tensor &self, IntArrayRef padding, Tensor &out) {
413
- return torch::replication_pad3d_out(out, self, padding);
414
- })
415
- .define_singleton_method(
416
- "_rrelu_with_noise",
417
- *[](const Tensor &self, const Tensor &noise, Scalar lower, Scalar upper, bool training) {
418
- return torch::rrelu_with_noise(self, noise, lower, upper, training);
419
- })
420
- .define_singleton_method(
421
- "_rrelu_with_noise_",
422
- *[](Tensor &self, const Tensor &noise, Scalar lower, Scalar upper, bool training) {
423
- return torch::rrelu_with_noise_(self, noise, lower, upper, training);
424
- })
425
- .define_singleton_method(
426
- "_rrelu_with_noise_out",
427
- *[](const Tensor &self, const Tensor &noise, Scalar lower, Scalar upper, bool training, Tensor &out) {
428
- return torch::rrelu_with_noise_out(out, self, noise, lower, upper, training);
429
- })
430
- .define_singleton_method(
431
- "_slow_conv3d",
432
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding) {
433
- return torch::slow_conv3d(self, weight, kernel_size, bias, stride, padding);
434
- })
435
- .define_singleton_method(
436
- "_slow_conv3d_forward",
437
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding) {
438
- return wrap(torch::slow_conv3d_forward(self, weight, kernel_size, bias, stride, padding));
439
- })
440
- .define_singleton_method(
441
- "_slow_conv3d_forward_output",
442
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, Tensor &output, Tensor &finput, Tensor &fgrad_input) {
443
- return wrap(torch::slow_conv3d_forward_out(output, finput, fgrad_input, self, weight, kernel_size, bias, stride, padding));
444
- })
445
- .define_singleton_method(
446
- "_slow_conv3d_out",
447
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, Tensor &out) {
448
- return torch::slow_conv3d_out(out, self, weight, kernel_size, bias, stride, padding);
449
- })
450
- .define_singleton_method(
451
- "_slow_conv_dilated2d",
452
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, IntArrayRef dilation) {
453
- return torch::slow_conv_dilated2d(self, weight, kernel_size, bias, stride, padding, dilation);
454
- })
455
- .define_singleton_method(
456
- "_slow_conv_dilated3d",
457
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, IntArrayRef dilation) {
458
- return torch::slow_conv_dilated3d(self, weight, kernel_size, bias, stride, padding, dilation);
459
- })
460
- .define_singleton_method(
461
- "_slow_conv_transpose2d",
462
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, IntArrayRef output_padding, IntArrayRef dilation) {
463
- return torch::slow_conv_transpose2d(self, weight, kernel_size, bias, stride, padding, output_padding, dilation);
464
- })
465
- .define_singleton_method(
466
- "_slow_conv_transpose2d_out",
467
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, IntArrayRef output_padding, IntArrayRef dilation, Tensor &out) {
468
- return torch::slow_conv_transpose2d_out(out, self, weight, kernel_size, bias, stride, padding, output_padding, dilation);
469
- })
470
- .define_singleton_method(
471
- "_slow_conv_transpose3d",
472
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, IntArrayRef output_padding, IntArrayRef dilation) {
473
- return torch::slow_conv_transpose3d(self, weight, kernel_size, bias, stride, padding, output_padding, dilation);
474
- })
475
- .define_singleton_method(
476
- "_slow_conv_transpose3d_out",
477
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, IntArrayRef output_padding, IntArrayRef dilation, Tensor &out) {
478
- return torch::slow_conv_transpose3d_out(out, self, weight, kernel_size, bias, stride, padding, output_padding, dilation);
479
- })
480
- .define_singleton_method(
481
- "_smooth_l1_loss",
482
- *[](const Tensor &self, const Tensor &target, MyReduction reduction) {
483
- return torch::smooth_l1_loss(self, target, reduction);
484
- })
485
- .define_singleton_method(
486
- "_smooth_l1_loss_out",
487
- *[](const Tensor &self, const Tensor &target, MyReduction reduction, Tensor &out) {
488
- return torch::smooth_l1_loss_out(out, self, target, reduction);
489
- })
490
- .define_singleton_method(
491
- "_soft_margin_loss",
492
- *[](const Tensor &self, const Tensor &target, MyReduction reduction) {
493
- return torch::soft_margin_loss(self, target, reduction);
494
- })
495
- .define_singleton_method(
496
- "_soft_margin_loss_out",
497
- *[](const Tensor &self, const Tensor &target, MyReduction reduction, Tensor &out) {
498
- return torch::soft_margin_loss_out(out, self, target, reduction);
499
- })
500
- .define_singleton_method(
501
- "_softplus",
502
- *[](const Tensor &self, Scalar beta, Scalar threshold) {
503
- return torch::softplus(self, beta, threshold);
504
- })
505
- .define_singleton_method(
506
- "_softplus_out",
507
- *[](const Tensor &self, Scalar beta, Scalar threshold, Tensor &out) {
508
- return torch::softplus_out(out, self, beta, threshold);
509
- })
510
- .define_singleton_method(
511
- "_softshrink",
512
- *[](const Tensor &self, Scalar lambd) {
513
- return torch::softshrink(self, lambd);
514
- })
515
- .define_singleton_method(
516
- "_softshrink_out",
517
- *[](const Tensor &self, Scalar lambd, Tensor &out) {
518
- return torch::softshrink_out(out, self, lambd);
519
- })
520
- .define_singleton_method(
521
- "_thnn_conv2d",
522
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding) {
523
- return torch::thnn_conv2d(self, weight, kernel_size, bias, stride, padding);
524
- })
525
- .define_singleton_method(
526
- "_thnn_conv2d_forward",
527
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding) {
528
- return wrap(torch::thnn_conv2d_forward(self, weight, kernel_size, bias, stride, padding));
529
- })
530
- .define_singleton_method(
531
- "_thnn_conv2d_forward_output",
532
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, Tensor &output, Tensor &finput, Tensor &fgrad_input) {
533
- return wrap(torch::thnn_conv2d_forward_out(output, finput, fgrad_input, self, weight, kernel_size, bias, stride, padding));
534
- })
535
- .define_singleton_method(
536
- "_thnn_conv2d_out",
537
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, Tensor &out) {
538
- return torch::thnn_conv2d_out(out, self, weight, kernel_size, bias, stride, padding);
539
- })
540
- .define_singleton_method(
541
- "_thnn_conv_depthwise2d",
542
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, IntArrayRef dilation) {
543
- return torch::thnn_conv_depthwise2d(self, weight, kernel_size, bias, stride, padding, dilation);
544
- })
545
- .define_singleton_method(
546
- "_thnn_conv_depthwise2d_forward",
547
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, IntArrayRef dilation) {
548
- return torch::thnn_conv_depthwise2d_forward(self, weight, kernel_size, bias, stride, padding, dilation);
549
- })
550
- .define_singleton_method(
551
- "_thnn_conv_depthwise2d_forward_out",
552
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, IntArrayRef dilation, Tensor &out) {
553
- return torch::thnn_conv_depthwise2d_forward_out(out, self, weight, kernel_size, bias, stride, padding, dilation);
554
- })
555
- .define_singleton_method(
556
- "_thnn_conv_depthwise2d_out",
557
- *[](const Tensor &self, const Tensor &weight, IntArrayRef kernel_size, OptionalTensor bias, IntArrayRef stride, IntArrayRef padding, IntArrayRef dilation, Tensor &out) {
558
- return torch::thnn_conv_depthwise2d_out(out, self, weight, kernel_size, bias, stride, padding, dilation);
559
- });
560
- }