torch icon indicating copy to clipboard operation
torch copied to clipboard

tensor$repeat(c(...)) not working?

Open AlexLeeR opened this issue 10 months ago • 2 comments

Hi there,

I would like to repeat tensor along the first dimension 4 times.

First I create the tensor x <- torch_tensor(c(1, 2, 3))

Then I add a dimension at position 1: x2 = x$unsqueeze(1)

Here I'm attempting to repeat the first dimension four times and it throws an error:

>repeated_matrix <- x$repeat(c(2, 1))
Error: unexpected 'repeat' in "repeated_matrix <- x$repeat"

I also tried different variations:

> repeated_matrix <- x$repeat(list(2, 1))
Error: unexpected 'repeat' in "repeated_matrix <- x$repeat"
> repeated_matrix <- x$repeat(dim=c(2, 1))
Error: unexpected 'repeat' in "repeated_matrix <- x$repeat"
> repeated_matrix <- x$repeat(dims=c(2, 1))
Error: unexpected 'repeat' in "repeated_matrix <- x$repeat"

All of which are not working!

Thank you

AlexLeeR avatar Mar 03 '25 13:03 AlexLeeR

Ah yes, I came across this bug a while back too. I figured out a workaround but unfortunately I was busy at the time and forgot to post an issue as I had intended. Here is the workaround:

x <- torch_tensor(c(1, 2, 3))
x2 = x$unsqueeze(1)
repeated_matrix <- x$`repeat`(c(2, 1))
repeated_matrix
#> torch_tensor
#>  1  2  3
#>  1  2  3
#> [ CPUFloatType{2,3} ]

Posting it here in case it helps diagnose the problem.

rdinnager avatar Mar 03 '25 14:03 rdinnager

The problem is that repeat is a keyword in R. We could either rename the function or document somewhere that it needs to be called like suggested by @rdinnage.

sebffischer avatar Mar 20 '25 15:03 sebffischer