Tôi đang thực hiện đào tạo mô hình ngôn ngữ trên penn treebank.tính lúng túng đối với việc đào tạo LSTM trên penn treebank
Tôi đang thêm mất cho mỗi dấu thời gian và sau đó tính toán sự bối rối.
Điều này mang lại cho tôi sự phức tạp không cao về mặt ý nghĩa của hàng trăm tỷ ngay cả sau khi được đào tạo một thời gian.
Mất chính nó giảm nhưng chỉ giảm xuống còn khoảng 20 ở mức tốt nhất. (Tôi cần số có một chữ số để mất mát để có được sự bối rối hợp lý).
Điều này làm cho tôi tự hỏi liệu tính toán lúng túng của tôi có bị sai lạc hay không.
Nó có nên dựa trên sự mất mát cho từng dấu thời gian và sau đó lấy trung bình thay vì thêm tất cả chúng lên?
batch_size của tôi là 20, NUM_STEPS là 35.
def perplexity(loss):
perplexity = np.exp(loss)
return perplexity
...
loss = 0
x = nn.Variable((batch_size, num_steps))
t = nn.Variable((batch_size, num_steps))
e_list = [PF.embed(x_elm, num_words, state_size, name="embed") for x_elm in F.split(x, axis=1)]
t_list = F.split(t, axis=1)
for i, (e_t, t_t) in enumerate(zip(e_list, t_list)):
h1 = l1(F.dropout(e_t,0.5))
h2 = l2(F.dropout(h1,0.5))
y = PF.affine(F.dropout(h2,0.5), num_words, name="pred")
t_t = F.reshape(t_t,[batch_size,1])
loss += F.mean(F.softmax_cross_entropy(y, t_t))
for epoch in range(max_epoch):
....
for i in range(iter_per_epoch):
x.d, t.d = get_words(train_data, i, batch_size)
perp = perplexity(loss.d)
....