Skip to content

Commit 5c6b8f7

Browse files
committed
get a few more tests passing
1 parent 8d602cc commit 5c6b8f7

File tree

6 files changed

+50
-45
lines changed

6 files changed

+50
-45
lines changed

TorchSharp.sln

+6-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "TorchSharp", "TorchSharp",
3636
pkg\TorchSharp\TorchSharp.symbols.nupkgproj = pkg\TorchSharp\TorchSharp.symbols.nupkgproj
3737
EndProjectSection
3838
EndProject
39-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibTorchSharp", "bin\obj\x64.Debug\Native\LibTorchSharp\LibTorchSharp.vcxproj", "{912E4543-FB5A-3172-BAFE-B3F15EE0A723}"
39+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LibTorchSharp", "bin\obj\x64.Debug\Native\LibTorchSharp\LibTorchSharp.vcxproj", "{21AF5DC7-13CC-3DC7-93E8-A280955327E0}"
4040
EndProject
4141
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Native", "Native", "{CF2C1A9E-3A8A-4329-8A6E-7880C15AAC3D}"
4242
EndProject
@@ -62,6 +62,10 @@ Global
6262
{42B45168-476D-4BFA-87B8-81A34E6295CD}.Debug|x64.Build.0 = Debug|Any CPU
6363
{42B45168-476D-4BFA-87B8-81A34E6295CD}.Release|x64.ActiveCfg = Release|Any CPU
6464
{42B45168-476D-4BFA-87B8-81A34E6295CD}.Release|x64.Build.0 = Release|Any CPU
65+
{21AF5DC7-13CC-3DC7-93E8-A280955327E0}.Debug|x64.ActiveCfg = Debug|x64
66+
{21AF5DC7-13CC-3DC7-93E8-A280955327E0}.Debug|x64.Build.0 = Debug|x64
67+
{21AF5DC7-13CC-3DC7-93E8-A280955327E0}.Release|x64.ActiveCfg = Release|x64
68+
{21AF5DC7-13CC-3DC7-93E8-A280955327E0}.Release|x64.Build.0 = Release|x64
6569
EndGlobalSection
6670
GlobalSection(SolutionProperties) = preSolution
6771
HideSolutionNode = FALSE
@@ -73,7 +77,7 @@ Global
7377
{6C323B05-9028-4B09-911C-3C03AE058BEE} = {AED9C836-31E3-4F3F-8ABC-929555D3F3C4}
7478
{42B45168-476D-4BFA-87B8-81A34E6295CD} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
7579
{567456AD-B026-4CB6-B98D-4FC930C90223} = {D3D38B03-B557-484D-8348-8BADEE4DF592}
76-
{912E4543-FB5A-3172-BAFE-B3F15EE0A723} = {CF2C1A9E-3A8A-4329-8A6E-7880C15AAC3D}
80+
{21AF5DC7-13CC-3DC7-93E8-A280955327E0} = {CF2C1A9E-3A8A-4329-8A6E-7880C15AAC3D}
7781
{CF2C1A9E-3A8A-4329-8A6E-7880C15AAC3D} = {09EADF06-BE25-4228-AB53-95AE3E15B530}
7882
EndGlobalSection
7983
GlobalSection(ExtensibilityGlobals) = postSolution

src/Native/LibTorchSharp/THSNN.cpp

+26-26
Original file line numberDiff line numberDiff line change
@@ -177,9 +177,9 @@ NNModule THSNN_ReLU_ctor(bool inplace,
177177
//);
178178
}
179179

180-
Tensor THSNN_ReLU_forward(const NNAnyModule module, const Tensor tensor)
180+
Tensor THSNN_ReLU_forward(const NNModule module, const Tensor tensor)
181181
{
182-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::ReLU>()->forward(*tensor));
182+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::ReLU>()->forward(*tensor));
183183
}
184184

185185
NNModule THSNN_Dropout_ctor(double probability,
@@ -197,9 +197,9 @@ NNModule THSNN_Dropout_ctor(double probability,
197197
);
198198
}
199199

200-
Tensor THSNN_Dropout_forward(const NNAnyModule module, const Tensor tensor)
200+
Tensor THSNN_Dropout_forward(const NNModule module, const Tensor tensor)
201201
{
202-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::Dropout>()->forward(*tensor));
202+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::Dropout>()->forward(*tensor));
203203
}
204204

205205
NNModule THSNN_FeatureAlphaDropout_ctor(double probability,
@@ -216,9 +216,9 @@ NNModule THSNN_FeatureAlphaDropout_ctor(double probability,
216216
);
217217
}
218218

219-
Tensor THSNN_FeatureAlphaDropout_forward(const NNAnyModule module, const Tensor tensor)
219+
Tensor THSNN_FeatureAlphaDropout_forward(const NNModule module, const Tensor tensor)
220220
{
221-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::FeatureAlphaDropout>()->forward(*tensor));
221+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::FeatureAlphaDropout>()->forward(*tensor));
222222
}
223223

224224
NNModule THSNN_LogSoftMax_ctor(int64_t dim,
@@ -239,9 +239,9 @@ NNModule THSNN_LogSoftMax_ctor(int64_t dim,
239239
);
240240
}
241241

242-
Tensor THSNN_LogSoftMax_forward(const NNAnyModule module, const Tensor tensor)
242+
Tensor THSNN_LogSoftMax_forward(const NNModule module, const Tensor tensor)
243243
{
244-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::LogSoftmax>()->forward(*tensor));
244+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::LogSoftmax>()->forward(*tensor));
245245
}
246246

247247
NNModule THSNN_AvgPool2d_ctor(const int64_t* kernelSize, const int kernelSizeLength, const int64_t* stride, const int strideLength,
@@ -264,9 +264,9 @@ NNModule THSNN_AvgPool2d_ctor(const int64_t* kernelSize, const int kernelSizeLen
264264
);
265265
}
266266

267-
Tensor THSNN_AvgPool2d_forward(const NNAnyModule module, const Tensor tensor)
267+
Tensor THSNN_AvgPool2d_forward(const NNModule module, const Tensor tensor)
268268
{
269-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::AvgPool2d>()->forward(*tensor));
269+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::AvgPool2d>()->forward(*tensor));
270270
}
271271

272272
NNModule THSNN_AdaptiveAvgPool2d_ctor(const int64_t* kernelSize, const int kernelSizeLength,
@@ -281,9 +281,9 @@ NNModule THSNN_AdaptiveAvgPool2d_ctor(const int64_t* kernelSize, const int kerne
281281
);
282282
}
283283

284-
Tensor THSNN_AdaptiveAvgPool2d_forward(const NNAnyModule module, const Tensor tensor)
284+
Tensor THSNN_AdaptiveAvgPool2d_forward(const NNModule module, const Tensor tensor)
285285
{
286-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::AdaptiveAvgPool2d>()->forward(*tensor));
286+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::AdaptiveAvgPool2d>()->forward(*tensor));
287287
}
288288

289289
NNModule THSNN_MaxPool2d_ctor(const int64_t* kernelSize, const int kernelSizeLength, const int64_t* stride, const int strideLength,
@@ -304,9 +304,9 @@ NNModule THSNN_MaxPool2d_ctor(const int64_t* kernelSize, const int kernelSizeLen
304304
)
305305
}
306306

307-
Tensor THSNN_MaxPool2d_forward(const NNAnyModule module, const Tensor tensor)
307+
Tensor THSNN_MaxPool2d_forward(const NNModule module, const Tensor tensor)
308308
{
309-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::MaxPool2d>()->forward(*tensor));
309+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::MaxPool2d>()->forward(*tensor));
310310
}
311311

312312
NNModule THSNN_Linear_ctor(const int64_t input_size, const int64_t output_size, const bool bias,
@@ -327,32 +327,32 @@ NNModule THSNN_Linear_ctor(const int64_t input_size, const int64_t output_size,
327327
);
328328
}
329329

330-
Tensor THSNN_Linear_forward(const NNAnyModule module, const Tensor tensor)
330+
Tensor THSNN_Linear_forward(const NNModule module, const Tensor tensor)
331331
{
332-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::Linear>()->forward(*tensor));
332+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::Linear>()->forward(*tensor));
333333
}
334334

335-
Tensor THSNN_Linear_bias(const NNAnyModule module)
335+
Tensor THSNN_Linear_bias(const NNModule module)
336336
{
337-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::Linear>()->bias);
337+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::Linear>()->bias);
338338
}
339339

340-
void THSNN_Linear_set_bias(const NNAnyModule module, const Tensor bias)
340+
void THSNN_Linear_set_bias(const NNModule module, const Tensor bias)
341341
{
342342
CATCH(
343-
(*module)->get<torch::nn::Linear>()->bias = *bias;
343+
(*module)->as<torch::nn::Linear>()->bias = *bias;
344344
)
345345
}
346346

347-
Tensor THSNN_Linear_weight(const NNAnyModule module)
347+
Tensor THSNN_Linear_weight(const NNModule module)
348348
{
349-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::Linear>()->weight);
349+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::Linear>()->weight);
350350
}
351351

352-
void THSNN_Linear_set_weight(const NNAnyModule module, const Tensor weight)
352+
void THSNN_Linear_set_weight(const NNModule module, const Tensor weight)
353353
{
354354
CATCH(
355-
(*module)->get<torch::nn::Linear>()->weight = *weight;
355+
(*module)->as<torch::nn::Linear>()->weight = *weight;
356356
)
357357
}
358358

@@ -376,9 +376,9 @@ NNModule THSNN_Conv2d_ctor(const int64_t inputChannel, const int64_t outputChann
376376
);
377377
}
378378

379-
Tensor THSNN_Conv2d_forward(const NNAnyModule module, const Tensor tensor)
379+
Tensor THSNN_Conv2d_forward(const NNModule module, const Tensor tensor)
380380
{
381-
CATCH_RETURN_TENSOR((*module)->get<torch::nn::Conv2d>()->forward(*tensor));
381+
CATCH_RETURN_TENSOR((*module)->as<torch::nn::Conv2d>()->forward(*tensor));
382382
}
383383

384384
NNSequential THSNN_Sequential_ctor()

src/Native/LibTorchSharp/THSNN.h

+13-13
Original file line numberDiff line numberDiff line change
@@ -26,36 +26,36 @@ EXPORT_API(NNModule) THSNN_Module_register_module(const NNModule module, cons
2626
EXPORT_API(void) THSNN_Module_dispose(const NNModule module);
2727

2828
EXPORT_API(void) THSNN_AnyModule_dispose(const NNAnyModule module);
29-
EXPORT_API(NNModule) THSNN_AnyModule_get(const NNAnyModule module);
29+
//EXPORT_API(NNModule) THSNN_AnyModule_get(const NNAnyModule module);
3030

3131
EXPORT_API(NNModule) THSNN_custom_module(const char** names, at::Tensor** parameters, const bool* require_grad, const int length, Tensor(*forward)(Tensor), NNAnyModule* outAsAnyModule);
3232
EXPORT_API(NNModule) THSNN_AdaptiveAvgPool2d_ctor(const int64_t* sizes, const int length, NNAnyModule* outAsAnyModule);
33-
EXPORT_API(Tensor) THSNN_AdaptiveAvgPool2d_forward(const NNAnyModule module, const Tensor tensor);
33+
EXPORT_API(Tensor) THSNN_AdaptiveAvgPool2d_forward(const NNModule module, const Tensor tensor);
3434

3535
EXPORT_API(NNModule) THSNN_AvgPool2d_ctor(const int64_t* kernelSize, const int kernelSizeLength, const int64_t* stride, const int strideLength, NNAnyModule* outAsAnyModule);
36-
EXPORT_API(Tensor) THSNN_AvgPool2d_forward(const NNAnyModule module, const Tensor tensor);
36+
EXPORT_API(Tensor) THSNN_AvgPool2d_forward(const NNModule module, const Tensor tensor);
3737

3838
EXPORT_API(NNModule) THSNN_Conv2d_ctor(const int64_t inputChannel, const int64_t outputChannel, const int64_t kernelSize, const int64_t stride, const int64_t padding, NNAnyModule* outAsAnyModule);
39-
EXPORT_API(Tensor) THSNN_Conv2d_forward(const NNAnyModule module, const Tensor tensor);
39+
EXPORT_API(Tensor) THSNN_Conv2d_forward(const NNModule module, const Tensor tensor);
4040

4141
EXPORT_API(NNModule) THSNN_MaxPool2d_ctor(const int64_t* kernelSize, const int kernelSizeLength, const int64_t* stride, const int strideLength, NNAnyModule* outAsAnyModule);
42-
EXPORT_API(Tensor) THSNN_MaxPool2d_forward(const NNAnyModule module, const Tensor tensor);
42+
EXPORT_API(Tensor) THSNN_MaxPool2d_forward(const NNModule module, const Tensor tensor);
4343

4444
EXPORT_API(NNModule) THSNN_Dropout_ctor(double probability, NNAnyModule* outAsAnyModule);
45-
EXPORT_API(Tensor) THSNN_Dropout_forward(const NNAnyModule module, const Tensor tensor);
45+
EXPORT_API(Tensor) THSNN_Dropout_forward(const NNModule module, const Tensor tensor);
4646

4747
EXPORT_API(NNModule) THSNN_FeatureAlphaDropout_ctor(double probability, NNAnyModule* outAsAnyModule);
48-
EXPORT_API(Tensor) THSNN_FeatureAlphaDropout_forward(const NNAnyModule module, const Tensor tensor);
48+
EXPORT_API(Tensor) THSNN_FeatureAlphaDropout_forward(const NNModule module, const Tensor tensor);
4949

5050
EXPORT_API(NNModule) THSNN_Linear_ctor(const int64_t input_size, const int64_t output_size, const bool with_bias, NNAnyModule* outAsAnyModule);
51-
EXPORT_API(Tensor) THSNN_Linear_forward(const NNAnyModule module, const Tensor tensor);
52-
EXPORT_API(Tensor) THSNN_Linear_bias(const NNAnyModule module);
53-
EXPORT_API(void) THSNN_Linear_set_bias(const NNAnyModule module, const Tensor tensor);
54-
EXPORT_API(Tensor) THSNN_Linear_weight(const NNAnyModule module);
55-
EXPORT_API(void) THSNN_Linear_set_weight(const NNAnyModule module, const Tensor tensor);
51+
EXPORT_API(Tensor) THSNN_Linear_forward(const NNModule module, const Tensor tensor);
52+
EXPORT_API(Tensor) THSNN_Linear_bias(const NNModule module);
53+
EXPORT_API(void) THSNN_Linear_set_bias(const NNModule module, const Tensor tensor);
54+
EXPORT_API(Tensor) THSNN_Linear_weight(const NNModule module);
55+
EXPORT_API(void) THSNN_Linear_set_weight(const NNModule module, const Tensor tensor);
5656

5757
EXPORT_API(NNModule) THSNN_ReLU_ctor(bool inplace, NNAnyModule* outAsAnyModule);
58-
EXPORT_API(Tensor) THSNN_ReLU_forward(const NNAnyModule module, const Tensor tensor);
58+
EXPORT_API(Tensor) THSNN_ReLU_forward(const NNModule module, const Tensor tensor);
5959

6060
EXPORT_API(NNSequential) THSNN_Sequential_ctor();
6161
EXPORT_API(void) THSNN_Sequential_push_back(const NNSequential module, const char* name, const NNAnyModule submodule);

src/Native/build.proj

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@
3939
</PropertyGroup>
4040

4141
<PropertyGroup>
42-
<LibName Condition="'$(OS)' == 'Windows_NT' OR '$(AssumeOS)' == 'windows'">libtorch-win-shared-with-deps</LibName>
42+
<LibName Condition="'$(OS)' == 'Windows_NT' OR '$(AssumeOS)' == 'windows'">libtorch-win-shared-with-deps$(LibTorchDebug)</LibName>
4343
<LibName Condition="'$(OS)' != 'Windows_NT' OR '$(AssumeOS)' == 'linux'">libtorch-shared-with-deps</LibName>
4444
<LibName Condition="$([MSBuild]::IsOSPlatform('osx')) OR '$(AssumeOS)' == 'mac'">libtorch-macos</LibName>
4545

46-
<LibtorchPath Condition="'$(LibtorchPath)'==''">$(IntermediateOutputRootPath)LibTorch.Redist\$(LibName)-$(LibtorchVersion)$(LibTorchDebug)\libtorch\share\cmake\Torch</LibtorchPath>
46+
<LibtorchPath Condition="'$(LibtorchPath)'==''">$(IntermediateOutputRootPath)LibTorch.Redist\$(LibName)-$(LibtorchVersion)\libtorch\share\cmake\Torch</LibtorchPath>
4747
</PropertyGroup>
4848

4949
<Target Name="BuildNativeUnix"

src/TorchSharp/NN/Linear.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public TorchTensor Forward (TorchTensor tensor)
3030
[DllImport ("LibTorchSharp")]
3131
extern static IntPtr THSNN_Linear_bias (Module.HType module);
3232
[DllImport ("LibTorchSharp")]
33-
extern static IntPtr THSNN_Linear_set_bias (Module.HType module, IntPtr tensor);
33+
extern static void THSNN_Linear_set_bias (Module.HType module, IntPtr tensor);
3434

3535
public TorchTensor? Bias {
3636
get {
@@ -39,7 +39,7 @@ public TorchTensor? Bias {
3939
return ((res == IntPtr.Zero) ? null : (TorchTensor ?)new TorchTensor (res));
4040
}
4141
set {
42-
var res = THSNN_Linear_set_bias (handle, (value.HasValue ? value.Value.Handle : IntPtr.Zero));
42+
THSNN_Linear_set_bias (handle, (value.HasValue ? value.Value.Handle : IntPtr.Zero));
4343
Torch.CheckForErrors ();
4444
}
4545
}

test/TorchSharpTest/TorchSharp.cs

+1
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,7 @@ public void TestGradConditional()
800800

801801
Assert.Equal(2, gradCounts);
802802

803+
//{ "grad can be implicitly created only for scalar outputs (_make_grads at ..\\..\\torch\\csrc\\autograd\\autograd.cpp:47)\n(no backtrace available)"}
803804
modF.Train();
804805

805806
eval = modF.Forward(x);

0 commit comments

Comments
 (0)