ValueError: NestedIOFunction doesn't know how to process an input object of type

i try to reproduce 《Generating Sentences from a Continuous Space》with pytorch(version: 0.2.0_2), but geting stuck in some error:

File "CVAE.py", line 73, in forward
    output, hidden = self.rnn(embedded_dropout, h0)
  File "/opt/conda/envs/pytorch-py35/lib/python3.5/site-packages/torch/nn/modules/module.py", line 224, in __call__
    result = self.forward(*input, **kwargs)
  File "/opt/conda/envs/pytorch-py35/lib/python3.5/site-packages/torch/nn/modules/rnn.py", line 162, in forward
    output, hidden = func(input, self.all_weights, hx)
  File "/opt/conda/envs/pytorch-py35/lib/python3.5/site-packages/torch/nn/_functions/rnn.py", line 351, in forward
    return func(input, *fargs, **fkwargs)
  File "/opt/conda/envs/pytorch-py35/lib/python3.5/site-packages/torch/autograd/function.py", line 283, in _do_forward
    flat_input = tuple(_iter_variables(input))
  File "/opt/conda/envs/pytorch-py35/lib/python3.5/site-packages/torch/autograd/function.py", line 251, in _iter
    for var in _iter(o):
  File "/opt/conda/envs/pytorch-py35/lib/python3.5/site-packages/torch/autograd/function.py", line 255, in _iter
    "an input object of type " + torch.typename(obj))
ValueError: NestedIOFunction doesn't know how to process an input object of type CVAE._stats_from_z.<locals>.<genexpr>

from the message, error is caused by the function “_stats_from_z” :

batch_size = z.size()[0]
if self.decoder.params['rnn_cell'] == 'lstm':
    decoder_hidden = self.fc_h(z), self.fc_c(z)
    decoder_hidden = (h.view(self.decoder_params['n_layers'] * self.decoder.num_directions, batch_size, -1) for h in decoder_hidden)
    return decoder_hidden
else:
    decoder_hidden = self.fc_h(z).view(self.decoder_params['n_layers'] * self.decoder.num_directions, batch_size, -1)
    return decoder_hidden

when choose the ‘lstm’ branch, the error occur, the other branch(gru) is ok.

i don`t kown what is happening?

Change your returned generator to something like a tuple.

1 Like

thank you. but i don`t understand, can be more specific?

thanks, i know the problem, i need to learn more python。