As far as I understand, all rows of T1 are equal to each other.
Also length is not necessarily divisible without remainder by batch_size.
If so, you could just slice T1 and repeat it length times:
batch_size = 10
length = 12
cnn_features = 2
x = torch.ones(batch_size, cnn_features)
y = torch.randn(length, cnn_features)
x = x[0].repeat(length, 1)
z = x * y