我正在尝试创建一种RNN前向通过方法,该方法可以采用可变的输入,隐藏和输出大小,并创建所需的rnn个像元。对我来说,好像我正在将正确的变量传递给self.rnn_cell - x的输入值和上一个隐藏层。但是,我收到的错误包括在下面。
我也曾尝试使用x [i]和x [:,i,i](如我的教授所建议)无济于事。我很困惑,只是在寻找有关我是否在这里做正确的事情的指导。我的教授建议,由于我一直收到错误,因此我应该在jupyter notebook中重新启动内核并重新运行代码。我有,并且收到相同的错误...
请让我知道是否需要其他上下文。
class RNN(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(RNN, self).__init__()
self.hidden_size = hidden_size
self.rnn_cell = nn.RNNCell(input_size, hidden_size)
self.fc = nn.Linear(hidden_size, output_size)
self.softmax = nn.LogSoftmax(dim=1)
def forward(self, x):
"""
x: size [seq_length, 1, input_size]
"""
h = torch.zeros(x.size(1), self.hidden_size)
for i in range(x.size(0)):
### START YOUR CODE ###
h = self.rnn_cell(x[:,:,i], h)
### END YOUR CODE ###
### START YOUR CODE ###
# Hint: first call fc, then call softmax
out = self.softmax(self.fc(self.hidden_size, h.size(0)))
### END YOUR CODE ###
return out
IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)
我不是RNN的专家,但可以尝试一下。
class RNN(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(RNN, self).__init__()
self.hidden_size = hidden_size
self.rnn_cell = nn.RNN(input_size, hidden_size)
self.fc = nn.Linear(hidden_size, output_size)
def forward(self, x):
"""
x: size [seq_length, 1, input_size]
"""
h = torch.zeros(num_layers(hidden), x.size(0), self.hidden_size)
### START YOUR CODE ###
out,hidden = self.rnn_cell(x, h)
### END YOUR CODE ###
### START YOUR CODE ###
# Hint: first call fc, then call softmax
out = out.contiguous().view(-1, self.hidden_dim) #You need to reshape the output to fit the FC layer
out = self.fc(out)
return F.softmax(out)
### END YOUR CODE ###
return out
请尝试运行此命令,如果出现错误或任何疑问,请告知我。 (由于我无法发表评论,因此无法询问您详细信息。)
如果您对我的回答有任何想法,请给予支持。