public void TestPoissonNLLLoss2() { using (TorchTensor input = Float32Tensor.Random(new long[] { 5, 2 })) using (TorchTensor target = Float32Tensor.Random(new long[] { 5, 2 })) { var outTensor = PoissonNLL(true, true)(input, target); } }
public void TestErrorHandling() { using (TorchTensor input = Float32Tensor.From(new float[] { 0.5f, 1.5f })) using (TorchTensor target = Float32Tensor.From(new float[] { 1f, 2f, 3f })) { Assert.Throws <ExternalException>(() => PoissonNLL()(input, target)); } }
public void TestPoissonNLLLoss() { using (TorchTensor input = Float32Tensor.From(new float[] { 0.5f, 1.5f, 2.5f })) using (TorchTensor target = Float32Tensor.From(new float[] { 1f, 2f, 3f })) { var componentWiseLoss = ((TorchTensor)input.Exp()) - target * input; Assert.True(componentWiseLoss.Equal(PoissonNLL(reduction: NN.Reduction.None)(input, target))); Assert.True(componentWiseLoss.Sum().Equal(PoissonNLL(reduction: NN.Reduction.Sum)(input, target))); Assert.True(componentWiseLoss.Mean().Equal(PoissonNLL(reduction: NN.Reduction.Mean)(input, target))); } }