%reload_ext autoreload %autoreload 2 %matplotlib inline import os import io import tarfile import PIL import boto3 from fastai.vision import * path = untar_data(URLs.PETS); path path_anno = path/'annotations' path_img = path/'images' fnames = get_image_files(path_img) np.random.seed(2) pat = re.compile(r'/([^/]+)_\d+.jpg$') bs=64 img_size=299 data = ImageDataBunch.from_name_re(path_img, fnames, pat, ds_tfms=get_transforms(), size=img_size, bs=bs//2).normalize(imagenet_stats) learn = cnn_learner(data, models.resnet50, metrics=error_rate) learn.lr_find() learn.recorder.plot() learn.fit_one_cycle(8) learn.unfreeze() learn.fit_one_cycle(3, max_lr=slice(1e-6,1e-4)) save_texts(path_img/'models/classes.txt', data.classes) trace_input = torch.ones(1,3,img_size,img_size).cuda() jit_model = torch.jit.trace(learn.model.float(), trace_input) model_file='resnet50_jit.pth' output_path = str(path_img/f'models/{model_file}') torch.jit.save(jit_model, output_path) tar_file=path_img/'models/model.tar.gz' classes_file='classes.txt' with tarfile.open(tar_file, 'w:gz') as f: f.add(path_img/f'models/{model_file}', arcname=model_file) f.add(path_img/f'models/{classes_file}', arcname=classes_file) s3 = boto3.resource('s3') s3.meta.client.upload_file(str(tar_file), 'REPLACE_WITH_YOUR_BUCKET_NAME', 'fastai-models/lesson1/model.tar.gz')