20
20
input_size = lang_dataset .input_lang_words
21
21
hidden_size = 256
22
22
output_size = lang_dataset .output_lang_words
23
- total_epoch = 100
23
+ total_epoch = 20
24
24
25
25
encoder = EncoderRNN (input_size , hidden_size )
26
26
decoder = DecoderRNN (hidden_size , output_size , n_layers = 2 )
@@ -43,13 +43,14 @@ def showPlot(points):
43
43
def train (encoder , decoder , total_epoch , use_attn ):
44
44
45
45
param = list (encoder .parameters ()) + list (decoder .parameters ())
46
- optimizer = optim .SGD (param , lr = 1e-2 )
46
+ optimizer = optim .Adam (param , lr = 1e-2 )
47
47
criterion = nn .NLLLoss ()
48
48
plot_losses = []
49
49
for epoch in range (total_epoch ):
50
50
since = time .time ()
51
51
running_loss = 0
52
52
print_loss_total = 0
53
+ total_loss = 0
53
54
for i , data in enumerate (lang_dataloader ):
54
55
in_lang , out_lang = data
55
56
if torch .cuda .is_available ():
@@ -104,6 +105,7 @@ def train(encoder, decoder, total_epoch, use_attn):
104
105
optimizer .step ()
105
106
running_loss += loss .data [0 ]
106
107
print_loss_total += loss .data [0 ]
108
+ total_loss += loss .data [0 ]
107
109
if (i + 1 ) % 5000 == 0 :
108
110
print ('{}/{}, Loss:{:.6f}' .format (
109
111
i + 1 , len (lang_dataloader ), running_loss / 5000 ))
@@ -114,7 +116,7 @@ def train(encoder, decoder, total_epoch, use_attn):
114
116
print_loss_total = 0
115
117
during = time .time () - since
116
118
print ('Finish {}/{} , Loss:{:.6f}, Time:{:.0f}s' .format (
117
- epoch + 1 , total_epoch , running_loss / len (lang_dataset ), during ))
119
+ epoch + 1 , total_epoch , total_loss / len (lang_dataset ), during ))
118
120
print ()
119
121
showPlot (plot_losses )
120
122
0 commit comments