test_that("nms", {
torch::torch_manual_seed(1)
boxes <- create_tensors_with_iou(10, 1)
scores <- torch::torch_rand(10)
result <- ops_nms(boxes, scores, 1)
reference <- torch::torch_tensor(as.integer(c(0, 2, 5, 7, 3, 9, 8, 1, 4, 6) + 1))
expect_equal_to_tensor(result, reference)
expect_error(
ops_nms(torch::torch_rand(4), torch::torch_rand(3), 0.5),
regexp = "boxes should be a 2d tensor, got 1D"
)
expect_error(
ops_nms(torch::torch_rand(3, 5), torch::torch_rand(3), 0.5),
regexp = "boxes should have 4 elements in dimension 1, got 5"
)
expect_error(
ops_nms(torch::torch_rand(3, 4), torch::torch_rand(3,2), 0.5),
regexp = "scores should be a 1d tensor, got 2D"
)
expect_error(
ops_nms(torch::torch_rand(3, 4), torch::torch_rand(4), 0.5),
regexp = "boxes and scores should have same number of elements in dimension 0, got 3 and 4"
)
})
test_that("deform_conv", {
input <- torch_rand(4, 3, 10, 10)
kh <- kw <- 3
weight <- torch_rand(5, 3, kh, kw)
offset <- torch_rand(4, 2 * kh * kw, 8, 8)
mask <- torch_rand(4, kh * kw, 8, 8)
out <- ops_deform_conv2d(input, offset, weight, mask = mask)
expect_equal(out$shape, c(4,5,8,8))
expect_error(
ops_deform_conv2d(torch_rand(10), offset, weight, mask = mask),
regexp = "Expected input_c.ndimension()"
)
expect_error(
ops_deform_conv2d(input, torch_rand(5, 4, kh, kw), weight, mask = mask),
regexp = "the shape of the offset tensor at"
)
})
test_that("ps roi align works", {
torch::torch_manual_seed(2)
input <- torch_randn(1, 3, 28, 28)
boxes <- list(torch_tensor(matrix(c(1,1,5,5), ncol = 4)))
roi <- nn_ps_roi_align(output_size = c(1, 1))
output <- roi(input, boxes)
expect_equal(
as.numeric(output),
# result validated with pytorch.
c(0.105428881943226, -0.360159754753113, 0.21501287817955),
tolerance = 1e-4
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.