Good morning.

I’m using a Variational Autoencoder with this loss function:

```
def loss_function(self, x_hat, x, mu, logvar, β=1):
# Reconstruction + β * KL divergence losses summed over all elements and batch
loss = nn.CrossEntropyLoss()
CE = loss(x_hat, x)
KLD = 0.5 * torch.sum(logvar.exp() - logvar - 1 + mu.pow(2))
return CE + β * KLD
```

`x`

is my input image of [batch_size, 1, 16, 16] size. When I start the training phase, it returns this error:

`RuntimeError: Expected object of scalar type Long but got scalar type Float for argument #2 'target' in call to _thnn_nll_loss2d_forward`

So I edit in this way: `CE = loss(x_hat, x.long())`

, but returns this error:

`RuntimeError: 1only batches of spatial targets supported (3D tensors) but got targets of size: : [256, 1, 16, 16]`

How can I use cross entropy correctly?