from glob import glob
import os
import numpy as np
import matplotlib.pyplot as plt
import shutil
from torchvision import transforms
from torchvision import models
import torch
from torch.autograd import Variable
import torch.nn as nn
from torch.optim import lr_scheduler
from torch import optim
from torchvision.datasets import ImageFolder
from torchvision.utils import make_grid
import time
def imshow(inp):
"""Imshow for Tensor."""
inp = inp.numpy().transpose((1, 2, 0))
mean = np.array([0.485, 0.456, 0.406])
std = np.array([0.229, 0.224, 0.225])
inp = std * inp + mean
inp = np.clip(inp, 0, 1)
plt.imshow(inp)
path = '../Chapter03/dogsandcats/'
files = glob(os.path.join(path,'*/*.jpg'))#读取文件夹内的所有文件,join连接两个或更多的路径名组件
no_of_images = len(files)
shuffle = np.random.permutation(no_of_images)#创建可用于创建验证数据集的混合索引
os.mkdir(os.path.join(path,'valid'))#创建保存验证图片集的 validation 目录
os.mkdir(os.path.join(path,'train'))
for t in ['train','valid']: