1
resposta

resultados concatenando minhas predições com o real

QUANDO ESTOU EXECUTANDO ESSE CODIGO:

Xtest = torch.stack([tup[0] for tup in test_set])
Xtest = Xtest.to(args['device'])

ytest = torch.stack([tup[1] for tup in test_set])
ypred = net(Xtest).cpu().data

data = torch.cat((ytest, ypred), axis=1)

df_results = pd.DataFrame(data, columns=['ypred', 'ytest'] )
df_results.head(20)

ESTOU TENTO O SEGUINTE TIPO DE ERRO:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-66-4b2c6245e309> in <cell line: 10>()
      8 data = torch.cat((ytest, ypred), axis=1)
      9 
---> 10 df_results = pd.DataFrame(data, columns=['ypred', 'ytest'] )
     11 df_results.head(20)

2 frames
/usr/local/lib/python3.10/dist-packages/pandas/core/frame.py in __init__(self, data, index, columns, dtype, copy)
    760                     )
    761                 else:
--> 762                     mgr = ndarray_to_mgr(
    763                         data,
    764                         index,

/usr/local/lib/python3.10/dist-packages/pandas/core/internals/construction.py in ndarray_to_mgr(values, index, columns, dtype, copy, typ)
    347     )
    348 
--> 349     _check_values_indices_shape_match(values, index, columns)
    350 
    351     if typ == "array":

/usr/local/lib/python3.10/dist-packages/pandas/core/internals/construction.py in _check_values_indices_shape_match(values, index, columns)
    418         passed = values.shape
    419         implied = (len(index), len(columns))
--> 420         raise ValueError(f"Shape of passed values is {passed}, indices imply {implied}")
    421 
    422 

ValueError: Shape of passed values is (3476, 11), indices imply (3476, 2)

PODERIA ME EXPLICA A ONDE EU DEVO ALTERAR?

1 resposta

Oii, Tulio! Tudo certo?

Pelo erro que você está recebendo, parece que há um problema com as dimensões dos tensores que você está tentando concatenar. O erro específico diz que a forma dos valores passados é (3476, 11), enquanto os índices implicam uma forma de (3476, 2).

Por favor, você pode verificar as dimensões dos tensores ytest e ypred antes de concatenar? É importante que ambos os tensores tenham o mesmo número de amostras. Além disso, cheque se a dimensão correta está sendo usada para a concatenação.

Um exemplo de código para checar e solucionar o problema abaixo:

# Checar as dimensões dos tensores
print('Dimensões de ytest:', ytest.shape)
print('Dimensões de ypred:', ypred.shape)

# Ver se ambos os tensores têm o mesmo número de amostras
assert ytest.shape[0] == ypred.shape[0], "O número de amostras em ytest e ypred é diferente."

# Concatenar os tensores ao longo do eixo correto
data = torch.cat((ytest.unsqueeze(1), ypred.unsqueeze(1)), dim=1)

# Verificar as dimensões do tensor concatenado
print('Dimensões de data:', data.shape)

# Criar o DataFrame com os dados concatenados
df_results = pd.DataFrame(data, columns=['ypred', 'ytest'])

Se a dúvida persistir, estamos aqui.

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.