1- import argparse
2- import torch
3- import torch .nn as nn
4- import numpy as np
51import os
2+ import torch
63import pickle
4+ import argparse
5+ import numpy as np
6+ import torch .nn as nn
77from data_loader import get_loader
88from build_vocab import Vocabulary
9+ from torchvision import transforms
910from model import EncoderCNN , DecoderRNN
1011from torch .nn .utils .rnn import pack_padded_sequence
11- from torchvision import transforms
1212import datetime
1313
1414# Device configuration
1515device = torch .device ('cuda' if torch .cuda .is_available () else 'cpu' )
1616now = datetime .datetime .now ()
1717dir = '/content/drive/My Drive/NLPResults/'
1818
19+
1920def append_progress (line ):
2021 filename = "Progress" + str (now .day ) + '-' + str (now .hour ) + str (now .minute ) + str (now .second ) + ".txt"
2122 with open (dir + filename , 'a' ) as f :
@@ -48,10 +49,10 @@ def main(args):
4849 data_loader = get_loader (args .image_dir , args .caption_path , vocab ,
4950 transform , args .batch_size ,
5051 shuffle = True , num_workers = args .num_workers )
51-
52+
5253 # Build the models
5354 encoder = EncoderCNN (args .embed_size ).to (device )
54- decoder = DecoderRNN (args .embed_size , args .hidden_size , len ( vocab ) , args .num_layers ).to (device )
55+ decoder = DecoderRNN (args .embed_size , args .hidden_size , vocab , args .num_layers ).to (device )
5556
5657 # Loss and optimizer
5758 criterion = nn .CrossEntropyLoss ()
@@ -80,20 +81,20 @@ def main(args):
8081 # Print log info
8182 if i % args .log_step == 0 :
8283 log_info = 'Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}, Perplexity: {:5.4f}' .format (epoch , args .num_epochs , i , total_step , loss .item (), np .exp (loss .item ()))
84+ print (log_info )
8385 append_progress (log_info )
84- print (log_info )
8586
8687 # Save the model checkpoints
8788 if (i + 1 ) % args .save_step == 0 :
8889 torch .save (decoder .state_dict (), os .path .join (
8990 args .model_path , 'decoder-{}-{}.ckpt' .format (epoch + 1 , i + 1 )))
9091 torch .save (encoder .state_dict (), os .path .join (
9192 args .model_path , 'encoder-{}-{}.ckpt' .format (epoch + 1 , i + 1 )))
92- #Save to DRive
93+ #Save to Drive
9394 torch .save (decoder .state_dict (), os .path .join (
94- dir , 'decoder-{}-{}-{}.ckpt' .format (epoch + 1 , i + 1 ,now )))
95+ dir , 'decoder-{}-{}-{}.ckpt' .format (epoch + 1 , i + 1 , now )))
9596 torch .save (encoder .state_dict (), os .path .join (
96- dir , 'encoder-{}-{}-{}.ckpt' .format (epoch + 1 , i + 1 ,now )))
97+ dir , 'encoder-{}-{}-{}.ckpt' .format (epoch + 1 , i + 1 , now )))
9798
9899
99100if __name__ == '__main__' :
@@ -107,8 +108,8 @@ def main(args):
107108 parser .add_argument ('--save_step' , type = int , default = 1000 , help = 'step size for saving trained models' )
108109
109110 # Model parameters
110- parser .add_argument ('--embed_size' , type = int , default = 256 , help = 'dimension of word embedding vectors' )
111- parser .add_argument ('--hidden_size' , type = int , default = 512 , help = 'dimension of lstm hidden states' )
111+ parser .add_argument ('--embed_size' , type = int , default = 768 , help = 'dimension of word embedding vectors' )
112+ parser .add_argument ('--hidden_size' , type = int , default = 1536 , help = 'dimension of lstm hidden states' )
112113 parser .add_argument ('--num_layers' , type = int , default = 1 , help = 'number of layers in lstm' )
113114
114115 parser .add_argument ('--num_epochs' , type = int , default = 5 )
@@ -117,4 +118,4 @@ def main(args):
117118 parser .add_argument ('--learning_rate' , type = float , default = 0.001 )
118119 args = parser .parse_args ()
119120 print (args )
120- main (args )
121+ main (args )
0 commit comments