ValueError: 期望输入为2D或3D(得到的是1D输入) PyTorch

class VAE(torch.nn.Module): def __init__(self, input_size, hidden_sizes, batch_size):    super(VAE, self).__init__()    self.input_size = input_size    self.hidden_sizes = hidden_sizes    self.batch_size = batch_size    self.fc = torch.nn.Linear(input_size, hidden_sizes[0])    self.BN = torch.nn.BatchNorm1d(hidden_sizes[0])    self.fc1 = torch.nn.Linear(hidden_sizes[0], hidden_sizes[1])    self.BN1 = torch.nn.BatchNorm1d(hidden_sizes[1])    self.fc2 = torch.nn.Linear(hidden_sizes[1], hidden_sizes[2])    self.BN2 = torch.nn.BatchNorm1d(hidden_sizes[2])    self.fc3_mu = torch.nn.Linear(hidden_sizes[2], hidden_sizes[3])    self.fc3_sig = torch.nn.Linear(hidden_sizes[2], hidden_sizes[3])    self.fc4 = torch.nn.Linear(hidden_sizes[3], hidden_sizes[2])    self.BN4 = torch.nn.BatchNorm1d(hidden_sizes[2])    self.fc5 = torch.nn.Linear(hidden_sizes[2], hidden_sizes[1])    self.BN5 = torch.nn.BatchNorm1d(hidden_sizes[1])    self.fc6 = torch.nn.Linear(hidden_sizes[1], hidden_sizes[0])    self.BN6 = torch.nn.BatchNorm1d(hidden_sizes[0])    self.fc7 = torch.nn.Linear(hidden_sizes[0], input_size)def sample_z(self, x_size, mu, log_var):     eps = torch.randn(x_size, self.hidden_sizes[-1])     return(mu + torch.exp(log_var/2) * eps) def forward(self, x):    ###########    # Encoder #    ###########    out1 = self.fc(x)    out1 = nn.relu(self.BN(out1))    out2 = self.fc1(out1)    out2 = nn.relu(self.BN1(out2))    out3 = self.fc2(out2)    out3 = nn.relu(self.BN2(out3))    mu = self.fc3_mu(out3)    sig = nn.softplus(self.fc3_sig(out3))    ###########    # Decoder  #    ###########    # sample from the distro    sample = self.sample_z(x.size(0), mu, sig)    out4 = self.fc4(sample)    out4 = nn.relu(self.BN4(out4))    out5 = self.fc5(out4)    out5 = nn.relu(self.BN5(out5))    out6 = self.fc6(out5)    out6 = nn.relu(self.BN6(out6))    out7 = nn.sigmoid(self.fc7(out6))    return(out7, mu, sig)vae = VAE(input_size, hidden_sizes, batch_size)vae.eval()x_sample, z_mu, z_var = vae(X)

错误是:

File "VAE_LongTensor.py", line 200, in <module>    x_sample, z_mu, z_var = vae(X)      ValueError: expected 2D or 3D input (got 1D input)

回答:

当你在PyTorch中构建一个nn.Module来处理1D信号时,PyTorch实际上期望输入是2D的:第一个维度是“迷你批次”维度。因此,你需要为你的X添加一个单例维度:

x_sample, z_mu, z_var = vae(X[None, ...])

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注