日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PyTorch官方教程中文版:入门强化教程代码学习

發布時間:2023/11/29 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PyTorch官方教程中文版:入门强化教程代码学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

PyTorch之數據加載和處理

from __future__ import print_function, division import os import torch import pandas as pd #用于更容易地進行csv解析 from skimage import io, transform #用于圖像的IO和變換 import numpy as np import matplotlib.pyplot as plt from torch.utils.data import Dataset, DataLoader from torchvision import transforms, utilsimport warnings warnings.filterwarnings("ignore")plt.ion()""" 讀取數據集 將csv中的標注點數據讀入(N,2)數組中,其中N是特征點的數量。讀取數據代碼如下: """ landmarks_frame = pd.read_csv('data/faces/faces/face_landmarks.csv')n = 65 img_name = landmarks_frame.iloc[n, 0] #提取第n行,第0列中的數據 landmarks = landmarks_frame.iloc[n, 1:].values landmarks = landmarks.astype('float').reshape(-1, 2)print('Image name: {}'.format(img_name)) print('Landmarks shape: {}'.format(landmarks.shape)) print('First 4 Landmarks: {}'.format(landmarks[:4]))""" 寫一個簡單的函數來展示一張圖片和它對應的標注點作為例子。 """def show_landmarks(image, landmarks):"""顯示帶有地標的圖片"""plt.imshow(image)plt.scatter(landmarks[:, 0], landmarks[:, 1], s=10, marker='.', c='r')plt.pause(5) # pause a bit so that plots are updatedplt.figure() show_landmarks(io.imread(os.path.join('data/faces/faces/', img_name)),landmarks) plt.show() """建立數據集類 """ class FaceLandmarksDataset(Dataset):"""面部標記數據集."""def __init__(self, csv_file, root_dir, transform=None):"""csv_file(string):帶注釋的csv文件的路徑。root_dir(string):包含所有圖像的目錄。transform(callable, optional):一個樣本上的可用的可選變換"""self.landmarks_frame = pd.read_csv(csv_file)self.root_dir = root_dirself.transform = transformdef __len__(self):return len(self.landmarks_frame)def __getitem__(self, idx):img_name = os.path.join(self.root_dir,self.landmarks_frame.iloc[idx, 0])image = io.imread(img_name)landmarks = self.landmarks_frame.iloc[idx, 1:]landmarks = np.array([landmarks])landmarks = landmarks.astype('float').reshape(-1, 2)sample = {'image': image, 'landmarks': landmarks}if self.transform:sample = self.transform(sample)return sample""" 數據可視化 """face_dataset = FaceLandmarksDataset(csv_file='data/faces/faces/face_landmarks.csv',root_dir='data/faces/faces/') fig = plt.figure()for i in range(len(face_dataset)):sample = face_dataset[i]print(i, sample['image'].shape, sample['landmarks'].shape)ax = plt.subplot(1, 4, i + 1)plt.tight_layout()ax.set_title('Sample #{}'.format(i))ax.axis('off')show_landmarks(**sample)if i == 3:plt.show()break""" 數據變換,數據預處理 讓我們創建三個轉換: * Rescale:縮放圖片 * RandomCrop:對圖片進行隨機裁剪。這是一種數據增強操作 * ToTensor:把numpy格式圖片轉為torch格式圖片 (我們需要交換坐標軸). """class Rescale(object):"""將樣本中的圖像重新縮放到給定大小。.Args:output_size(tuple或int):所需的輸出大小。 如果是元組,則輸出為與output_size匹配。 如果是int,則匹配較小的圖像邊緣到output_size保持縱橫比相同。"""def __init__(self, output_size):assert isinstance(output_size, (int, tuple))self.output_size = output_sizedef __call__(self, sample):image, landmarks = sample['image'], sample['landmarks']h, w = image.shape[:2]if isinstance(self.output_size, int):if h > w:new_h, new_w = self.output_size * h / w, self.output_sizeelse:new_h, new_w = self.output_size, self.output_size * w / helse:new_h, new_w = self.output_sizenew_h, new_w = int(new_h), int(new_w)img = transform.resize(image, (new_h, new_w))# h and w are swapped for landmarks because for images,# x and y axes are axis 1 and 0 respectivelylandmarks = landmarks * [new_w / w, new_h / h]return {'image': img, 'landmarks': landmarks}class RandomCrop(object):"""隨機裁剪樣本中的圖像.Args:output_size(tuple或int):所需的輸出大小。 如果是int,方形裁剪是。"""def __init__(self, output_size):assert isinstance(output_size, (int, tuple))if isinstance(output_size, int):self.output_size = (output_size, output_size)else:assert len(output_size) == 2self.output_size = output_sizedef __call__(self, sample):image, landmarks = sample['image'], sample['landmarks']h, w = image.shape[:2]new_h, new_w = self.output_sizetop = np.random.randint(0, h - new_h)left = np.random.randint(0, w - new_w)image = image[top: top + new_h,left: left + new_w]landmarks = landmarks - [left, top]return {'image': image, 'landmarks': landmarks}class ToTensor(object):"""將樣本中的ndarrays轉換為Tensors."""def __call__(self, sample):image, landmarks = sample['image'], sample['landmarks']# 交換顏色軸因為# numpy包的圖片是: H * W * C# torch包的圖片是: C * H * Wimage = image.transpose((2, 0, 1))return {'image': torch.from_numpy(image),'landmarks': torch.from_numpy(landmarks)}scale = Rescale(256) crop = RandomCrop(128) composed = transforms.Compose([Rescale(256),RandomCrop(224)])""" 應用轉換 """# 在樣本上應用上述的每個變換。 fig = plt.figure() sample = face_dataset[65] for i, tsfrm in enumerate([scale, crop, composed]):transformed_sample = tsfrm(sample)ax = plt.subplot(1, 3, i + 1)plt.tight_layout()ax.set_title(type(tsfrm).__name__)show_landmarks(**transformed_sample)plt.show()""" torch.utils.data.DataLoader是一個提供 每次這個數據集被采樣時: 及時地從文件中讀取圖片 * 對讀取的圖片應用轉換 * 由于其中一步操作是隨機的 (randomcrop) , 數據被增強了 功能的迭代器 """transformed_dataset = FaceLandmarksDataset(csv_file='data/faces/faces/face_landmarks.csv',root_dir='data/faces/faces/',transform=transforms.Compose([Rescale(256),RandomCrop(224),ToTensor()]))dataloader = DataLoader(transformed_dataset, batch_size=4,shuffle=True, num_workers=4)# 輔助功能:顯示批次 def show_landmarks_batch(sample_batched):"""Show image with landmarks for a batch of samples."""images_batch, landmarks_batch = \sample_batched['image'], sample_batched['landmarks']batch_size = len(images_batch)im_size = images_batch.size(2)grid_border_size = 2grid = utils.make_grid(images_batch)plt.imshow(grid.numpy().transpose((1, 2, 0)))for i in range(batch_size):plt.scatter(landmarks_batch[i, :, 0].numpy() + i * im_size + (i + 1) * grid_border_size,landmarks_batch[i, :, 1].numpy() + grid_border_size,s=10, marker='.', c='r')plt.title('Batch from dataloader')for i_batch, sample_batched in enumerate(dataloader):print(i_batch, sample_batched['image'].size(),sample_batched['landmarks'].size())# 觀察第4批次并停止。if i_batch == 3:plt.figure()show_landmarks_batch(sample_batched)plt.axis('off')plt.ioff()plt.show()break

Pytorch小試牛刀

""" 使用NumPy,手動實現網絡的 前向和反向傳播,來擬合隨機數據 """import numpy as np# N是批量大小; D_in是輸入維度; # 49/5000 H是隱藏的維度; D_out是輸出維度。 N, D_in, H, D_out = 64, 1000, 100, 10# 創建隨機輸入和輸出數據 x = np.random.randn(N, D_in) y = np.random.randn(N, D_out)# 隨機初始化權重 w1 = np.random.randn(D_in, H) w2 = np.random.randn(H, D_out)learning_rate = 1e-6 for t in range(500):# 前向傳遞:計算預測值yh = x.dot(w1)h_relu = np.maximum(h, 0)y_pred = h_relu.dot(w2)# 計算和打印損失lossloss = np.square(y_pred - y).sum()print(t, loss)# 反向傳播,計算w1和w2對loss的梯度grad_y_pred = 2.0 * (y_pred - y)grad_w2 = h_relu.T.dot(grad_y_pred)grad_h_relu = grad_y_pred.dot(w2.T)grad_h = grad_h_relu.copy()grad_h[h < 0] = 0grad_w1 = x.T.dot(grad_h)# 更新權重w1 -= learning_rate * grad_w1w2 -= learning_rate * grad_w2""" 使用PyTorch的tensor,手動在網絡中實現前向傳播和反向傳播 """import torchdtype = torch.float device = torch.device("cpu") # device = torch.device(“cuda:0”)#取消注釋以在GPU上運行# N是批量大小; D_in是輸入維度; # H是隱藏的維度; D_out是輸出維度。 N, D_in, H, D_out = 64, 1000, 100, 10#創建隨機輸入和輸出數據 x = torch.randn(N, D_in, device=device, dtype=dtype) y = torch.randn(N, D_out, device=device, dtype=dtype)# 隨機初始化權重 w1 = torch.randn(D_in, H, device=device, dtype=dtype) w2 = torch.randn(H, D_out, device=device, dtype=dtype)learning_rate = 1e-6 for t in range(500):# 前向傳遞:計算預測yh = x.mm(w1)h_relu = h.clamp(min=0)y_pred = h_relu.mm(w2) #(tensor).mm == (numpy).dot# 計算和打印損失loss = (y_pred - y).pow(2).sum().item()print(t, loss)# Backprop計算w1和w2相對于損耗的梯度grad_y_pred = 2.0 * (y_pred - y)grad_w2 = h_relu.t().mm(grad_y_pred)grad_h_relu = grad_y_pred.mm(w2.t())grad_h = grad_h_relu.clone()grad_h[h < 0] = 0grad_w1 = x.t().mm(grad_h)# 使用梯度下降更新權重w1 -= learning_rate * grad_w1w2 -= learning_rate * grad_w2""" 使用PyTorch的Tensors和autograd來實現我們的兩層的神經網絡 """import torchdtype = torch.float device = torch.device("cpu") # device = torch.device(“cuda:0”)#取消注釋以在GPU上運行# N是批量大小; D_in是輸入維度; # H是隱藏的維度; D_out是輸出維度。 N, D_in, H, D_out = 64, 1000, 100, 10# 創建隨機Tensors以保持輸入和輸出。 # 設置requires_grad = False表示我們不需要計算漸變 # 在向后傳球期間對于這些Tensors。 x = torch.randn(N, D_in, device=device, dtype=dtype) y = torch.randn(N, D_out, device=device, dtype=dtype)# 為權重創建隨機Tensors。 # 設置requires_grad = True表示我們想要計算漸變 # 在向后傳球期間尊重這些張貼。 w1 = torch.randn(D_in, H, device=device, dtype=dtype, requires_grad=True) w2 = torch.randn(H, D_out, device=device, dtype=dtype, requires_grad=True)learning_rate = 1e-6 for t in range(500):# 前向傳播:使用tensors上的操作計算預測值y;# 由于w1和w2有requires_grad=True,涉及這些張量的操作將讓PyTorch構建計算圖,# 從而允許自動計算梯度。由于我們不再手工實現反向傳播,所以不需要保留中間值的引用。y_pred = x.mm(w1).clamp(min=0).mm(w2)# 使用Tensors上的操作計算和打印丟失。# loss是一個形狀為()的張量# loss.item() 得到這個張量對應的python數值loss = (y_pred - y).pow(2).sum()print(t, loss.item())# 使用autograd計算反向傳播。這個調用將計算loss對所有requires_grad=True的tensor的梯度。# 這次調用后,w1.grad和w2.grad將分別是loss對w1和w2的梯度張量。loss.backward()# 使用梯度下降更新權重。對于這一步,我們只想對w1和w2的值進行原地改變;不想為更新階段構建計算圖,# 所以我們使用torch.no_grad()上下文管理器防止PyTorch為更新構建計算圖with torch.no_grad():w1 -= learning_rate * w1.gradw2 -= learning_rate * w2.grad# 反向傳播后手動將梯度設置為零w1.grad.zero_()w2.grad.zero_()""" 自定義nn模塊: 自定義Module的子類構建兩層網絡: """import torchclass TwoLayerNet(torch.nn.Module):def __init__(self, D_in, H, D_out):"""在構造函數中,我們實例化了兩個nn.Linear模塊,并將它們作為成員變量。"""super(TwoLayerNet, self).__init__()self.linear1 = torch.nn.Linear(D_in, H)self.linear2 = torch.nn.Linear(H, D_out)def forward(self, x):"""在前向傳播的函數中,我們接收一個輸入的張量,也必須返回一個輸出張量。我們可以使用構造函數中定義的模塊以及張量上的任意的(可微分的)操作。"""h_relu = self.linear1(x).clamp(min=0)y_pred = self.linear2(h_relu)return y_pred# N是批大小; D_in 是輸入維度; # H 是隱藏層維度; D_out 是輸出維度 N, D_in, H, D_out = 64, 1000, 100, 10# 產生輸入和輸出的隨機張量 x = torch.randn(N, D_in) y = torch.randn(N, D_out)# 通過實例化上面定義的類來構建我們的模型。 model = TwoLayerNet(D_in, H, D_out)# 構造損失函數和優化器。 # SGD構造函數中對model.parameters()的調用, # 將包含模型的一部分,即兩個nn.Linear模塊的可學習參數。 loss_fn = torch.nn.MSELoss(reduction='sum') optimizer = torch.optim.SGD(model.parameters(), lr=1e-4) for t in range(500):# 前向傳播:通過向模型傳遞x計算預測值yy_pred = model(x)#計算并輸出lossloss = loss_fn(y_pred, y)print(t, loss.item())# 清零梯度,反向傳播,更新權重optimizer.zero_grad()loss.backward()optimizer.step()""" 控制流和權重共享 使用普通的Python流控制來實現循環,并且我們可以通過在定義轉發時多次重用同一個模塊來實現最內層之間的權重共享。 """import random import torchclass DynamicNet(torch.nn.Module):def __init__(self, D_in, H, D_out):"""在構造函數中,我們構造了三個nn.Linear實例,它們將在前向傳播時被使用。"""super(DynamicNet, self).__init__()self.input_linear = torch.nn.Linear(D_in, H)self.middle_linear = torch.nn.Linear(H, H)self.output_linear = torch.nn.Linear(H, D_out)def forward(self, x):"""對于模型的前向傳播,我們隨機選擇0、1、2、3,并重用了多次計算隱藏層的middle_linear模塊。由于每個前向傳播構建一個動態計算圖,我們可以在定義模型的前向傳播時使用常規Python控制流運算符,如循環或條件語句。在這里,我們還看到,在定義計算圖形時多次重用同一個模塊是完全安全的。這是Lua Torch的一大改進,因為Lua Torch中每個模塊只能使用一次。"""h_relu = self.input_linear(x).clamp(min=0)for _ in range(random.randint(0, 3)): #權重共享的實現h_relu = self.middle_linear(h_relu).clamp(min=0)y_pred = self.output_linear(h_relu)return y_pred# N是批大小;D是輸入維度 # H是隱藏層維度;D_out是輸出維度 N, D_in, H, D_out = 64, 1000, 100, 10# 產生輸入和輸出隨機張量 x = torch.randn(N, D_in) y = torch.randn(N, D_out)# 實例化上面定義的類來構造我們的模型 model = DynamicNet(D_in, H, D_out)# 構造我們的損失函數(loss function)和優化器(Optimizer)。 # 用平凡的隨機梯度下降訓練這個奇怪的模型是困難的,所以我們使用了momentum方法。 criterion = torch.nn.MSELoss(reduction='sum') optimizer = torch.optim.SGD(model.parameters(), lr=1e-4, momentum=0.9) for t in range(500):# 前向傳播:通過向模型傳入x計算預測的y。y_pred = model(x)# 計算并打印損失loss = criterion(y_pred, y)print(t, loss.item())# 清零梯度,反向傳播,更新權重optimizer.zero_grad()loss.backward()optimizer.step()

PyTorch之遷移學習

from __future__ import print_function, division import torch import torch.nn as nn import torch.optim as optim from torch.optim import lr_scheduler import numpy as np import torchvision from torchvision import datasets, models, transforms import matplotlib.pyplot as plt import time import os import copyplt.ion() # interactive mode""" 加載數據 """#訓練集數據擴充和歸一化 #在驗證集上僅需要歸一化 data_transforms = {'train': transforms.Compose([transforms.RandomResizedCrop(224), #隨機裁剪一個area然后再resizetransforms.RandomHorizontalFlip(), #隨機水平翻轉transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])]),'val': transforms.Compose([transforms.Resize(256),transforms.CenterCrop(224), #圖像裁剪transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])]), }data_dir = 'data/hymenoptera_data' image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),data_transforms[x])for x in ['train', 'val']} dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=4,shuffle=True, num_workers=4)for x in ['train', 'val']} dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'val']} class_names = image_datasets['train'].classesdevice = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")""" 可視化部分圖像數據 """def imshow(inp, title=None):"""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 + meaninp = np.clip(inp, 0, 1)plt.imshow(inp)if title is not None:plt.title(title)plt.pause(1) # pause a bit so that plots are updated# 獲取一批訓練數據 inputs, classes = next(iter(dataloaders['train']))# 批量制作網格 out = torchvision.utils.make_grid(inputs)imshow(out, title=[class_names[x] for x in classes])""" 訓練模型 """def train_model(model, criterion, optimizer, scheduler, num_epochs=25):since = time.time()best_model_wts = copy.deepcopy(model.state_dict())best_acc = 0.0for epoch in range(num_epochs):print('Epoch {}/{}'.format(epoch, num_epochs - 1))print('-' * 10)# 每個epoch都有一個訓練和驗證階段for phase in ['train', 'val']:if phase == 'train':scheduler.step()model.train() # Set model to training modeelse:model.eval() # Set model to evaluate moderunning_loss = 0.0running_corrects = 0# 迭代數據.for inputs, labels in dataloaders[phase]:inputs = inputs.to(device)labels = labels.to(device)# 零參數梯度optimizer.zero_grad()# 前向# track history if only in trainwith torch.set_grad_enabled(phase == 'train'):outputs = model(inputs)_, preds = torch.max(outputs, 1)loss = criterion(outputs, labels)# 后向+僅在訓練階段進行優化if phase == 'train':loss.backward()optimizer.step()# 統計running_loss += loss.item() * inputs.size(0)running_corrects += torch.sum(preds == labels.data)epoch_loss = running_loss / dataset_sizes[phase]epoch_acc = running_corrects.double() / dataset_sizes[phase]print('{} Loss: {:.4f} Acc: {:.4f}'.format(phase, epoch_loss, epoch_acc))# 深度復制moif phase == 'val' and epoch_acc > best_acc:best_acc = epoch_accbest_model_wts = copy.deepcopy(model.state_dict())print()time_elapsed = time.time() - sinceprint('Training complete in {:.0f}m {:.0f}s'.format(time_elapsed // 60, time_elapsed % 60))print('Best val Acc: {:4f}'.format(best_acc))# 加載最佳模型權重model.load_state_dict(best_model_wts)return model""" 可視化模型的預測結果 """ #一個通用的展示少量預測圖片的函數 def visualize_model(model, num_images=6):was_training = model.trainingmodel.eval()images_so_far = 0fig = plt.figure()with torch.no_grad():for i, (inputs, labels) in enumerate(dataloaders['val']):inputs = inputs.to(device)labels = labels.to(device)outputs = model(inputs)_, preds = torch.max(outputs, 1)for j in range(inputs.size()[0]):images_so_far += 1ax = plt.subplot(num_images//2, 2, images_so_far)ax.axis('off')ax.set_title('predicted: {}'.format(class_names[preds[j]]))imshow(inputs.cpu().data[j])if images_so_far == num_images:model.train(mode=was_training)returnmodel.train(mode=was_training)""" 場景1:微調ConvNet 加載預訓練模型并重置最終完全連接的圖層。 """model_ft = models.resnet18(pretrained=True) #直接加載pre-train模型中預先訓練好的參數 num_ftrs = model_ft.fc.in_features #提取fc層中固定的參數 model_ft.fc = nn.Linear(num_ftrs, 2) #resnet網絡最后一層分類層fc是對1000種類型進行劃分,對于自己的數據集,如果只有2類model_ft = model_ft.to(device) #模型加載到指定設備上。(device = 'cpu')criterion = nn.CrossEntropyLoss()# 觀察所有參數都正在優化 optimizer_ft = optim.SGD(model_ft.parameters(), lr=0.001, momentum=0.9)# 每7個epochs衰減LR通過設置gamma=0.1 exp_lr_scheduler = lr_scheduler.StepLR(optimizer_ft, step_size=7, gamma=0.1)#訓練和評估模型 model_ft = train_model(model_ft, criterion, optimizer_ft, exp_lr_scheduler,num_epochs=25)#模型評估效果可視化 visualize_model(model_ft)""" 場景2:ConvNet作為固定特征提取器 在這里需要凍結除最后一層之外的所有網絡。通過設置requires_grad == False backward()來凍結參數,這樣在反向傳播backward()的時候他們的梯度就不會被計算。 """model_conv = torchvision.models.resnet18(pretrained=True) for param in model_conv.parameters():param.requires_grad = False#默認情況下,新構造模塊的參數需要_grad=True num_ftrs = model_conv.fc.in_features model_conv.fc = nn.Linear(num_ftrs, 2)model_conv = model_conv.to(device)criterion = nn.CrossEntropyLoss()# 觀察到只有最后一層的參數被優化為 # 與以前相反 optimizer_conv = optim.SGD(model_conv.fc.parameters(), lr=0.001, momentum=0.9)# LR每7個周期衰減0.1倍 exp_lr_scheduler = lr_scheduler.StepLR(optimizer_conv, step_size=7, gamma=0.1)#訓練和評估 model_conv = train_model(model_conv, criterion, optimizer_conv,exp_lr_scheduler, num_epochs=25) #模型評估效果可視化 visualize_model(model_conv)plt.ioff() plt.show()

保存和加載模型

import torch import torch.nn as nn import torch.functional as F import torch.utils.data as Data import torchvision import torch.optim as optim""" 什么是狀態字典:state_dict? """class TheModelClass(nn.Module):def __init__(self):super(TheModelClass, self).__init__()self.conv1 = nn.Conv2d(3, 6, 5)self.pool = nn.MaxPool2d(2, 2)self.conv2 = nn.Conv2d(6, 16, 5)self.fc1 = nn.Linear(16 * 5 * 5, 120)self.fc2 = nn.Linear(120, 84)self.fc3 = nn.Linear(84, 10)def forward(self, x):x = self.pool(F.relu(self.conv1(x)))x = self.pool(F.relu(self.conv2(x)))x = x.view(-1, 16 * 5 * 5)x = F.relu(self.fc1(x))x = F.relu(self.fc2(x))x = self.fc3(x)return x# 初始化模型 model = TheModelClass()# 初始化優化器 optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)# 打印模型的狀態字典 print("Model's state_dict:") for param_tensor in model.state_dict():print(param_tensor, "\t", model.state_dict()[param_tensor].size())# 打印優化器的狀態字典 print("Optimizer's state_dict:") for var_name in optimizer.state_dict():print(var_name, "\t", optimizer.state_dict()[var_name])# """ # 保存和加載推理模型 # """ # # #2.1 保存/加載state_dict(推薦使用) # # #保存 # torch.save(model.state_dict(), PATH) #(path是存儲路徑) # # #加載 # model = TheModelClass(*args, **kwargs) # model.load_state_dict(torch.load(PATH)) # model.eval() # #在 PyTorch 中最常見的模型保存使‘.pt’或者是‘.pth’作為模型文件擴展名。 # #請記住,在運行推理之前,務必調用model.eval()去設置 dropout 和 batch normalization 層為評估模式。如果不這么做,可能導致模型推斷結果不一致。 # # #2.2 保存/加載完整模型 # # #保存 # torch.save(model, PATH) # # #加載 # # # 模型類必須在此之前被定義 # model = torch.load(PATH) # model.eval() # # """ # 保存和加載 Checkpoint 用于推理/繼續訓練 # """ # # #保存 # torch.save({ # 'epoch': epoch, # 'model_state_dict': model.state_dict(), # 'optimizer_state_dict': optimizer.state_dict(), # 'loss': loss, # ... # }, PATH) # # #加載 # # model = TheModelClass(*args, **kwargs) # optimizer = TheOptimizerClass(*args, **kwargs) # # checkpoint = torch.load(PATH) # model.load_state_dict(checkpoint['model_state_dict']) # optimizer.load_state_dict(checkpoint['optimizer_state_dict']) # epoch = checkpoint['epoch'] # loss = checkpoint['loss'] # # model.eval() # # - or - # model.train() # #PyTorch 中常見的保存checkpoint 是使用 .tar 文件擴展名。 # # """ # 在一個文件中保存多個模型 # """ # # #保存 # torch.save({ # 'modelA_state_dict': modelA.state_dict(), # 'modelB_state_dict': modelB.state_dict(), # 'optimizerA_state_dict': optimizerA.state_dict(), # 'optimizerB_state_dict': optimizerB.state_dict(), # ... # }, PATH) # # #加載 # modelA = TheModelAClass(*args, **kwargs) # modelB = TheModelBClass(*args, **kwargs) # optimizerA = TheOptimizerAClass(*args, **kwargs) # optimizerB = TheOptimizerBClass(*args, **kwargs) # # checkpoint = torch.load(PATH) # modelA.load_state_dict(checkpoint['modelA_state_dict']) # modelB.load_state_dict(checkpoint['modelB_state_dict']) # optimizerA.load_state_dict(checkpoint['optimizerA_state_dict']) # optimizerB.load_state_dict(checkpoint['optimizerB_state_dict']) # # modelA.eval() # modelB.eval() # # - or - # modelA.train() # modelB.train() # #PyTorch 中常見的保存 checkpoint 是使用 .tar 文件擴展名。 # #請記住在運行推理之前,務必調用model.eval()去設置 dropout 和 batch normalization 為評估。如果不這樣做,有可能得到不一致的推斷結果。 # # 如果你想要恢復訓練,請調用model.train()以確保這些層處于訓練模式。 # # """ # 使用在不同模型參數下的熱啟動模式 # """ # # #保存 # torch.save(modelA.state_dict(), PATH) # # #加載 # modelB = TheModelBClass(*args, **kwargs) # modelB.load_state_dict(torch.load(PATH), strict=False) # # """ # 保存到 CPU、加載到 CPU # """ # # #保存 # torch.save(model.state_dict(), PATH) # # #加載 # device = torch.device('cpu') # model = TheModelClass(*args, **kwargs) # model.load_state_dict(torch.load(PATH, map_location=device)) # # """ # 保存到 GPU、加載到 GPU # """ # # #保存 # torch.save(model.state_dict(), PATH) # # #加載 # device = torch.device("cuda") # model = TheModelClass(*args, **kwargs) # model.load_state_dict(torch.load(PATH, map_location="cuda:0")) # Choose whatever GPU device number you want # model.to(device) # # 確保在你提供給模型的任何輸入張量上調用input = input.to(device) # # """ # 保存 torch.nn.DataParallel 模型 # """ # # #保存: # torch.save(model.module.state_dict(), PATH) 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的PyTorch官方教程中文版:入门强化教程代码学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

91手机电影| 中文字幕资源网在线观看 | 久久男人影院 | 欧美精品一区二区三区四区在线 | 欧美精品久久久久久久久久久 | 国产成人一级电影 | 成人h视频在线 | 久久婷婷国产色一区二区三区 | 新版资源中文在线观看 | 毛片网站在线看 | 日韩精品视频一二三 | 激情视频免费观看 | 九九视频在线播放 | 在线观看视频中文字幕 | 免费在线观看av片 | 天天插天天狠天天透 | 精品福利视频在线 | 亚洲天堂在线观看完整版 | 婷婷综合国产 | 国产 日韩 欧美 在线 | 日韩丝袜在线观看 | 成人免费看视频 | 国产精品第二页 | 在线观看av免费 | 天天操天天干天天干 | 国产精品免费看 | 亚洲一级在线观看 | 91中文字幕在线观看 | 人人藻人人澡人人爽 | 在线观看视频一区二区三区 | 久草免费在线观看视频 | 成人黄色毛片视频 | 黄色在线免费观看网站 | 国产精品久久久久久久久久白浆 | 婷婷夜夜 | 色99之美女主播在线视频 | 在线观看日本韩国电影 | 婷婷久久综合九色综合 | 日本久久中文字幕 | 亚洲丝袜一区 | 四虎影视成人永久免费观看视频 | 精品视频国产 | 99热在线国产精品 | 久久国产a | 丁香六月婷婷 | 黄色激情网址 | 国产精品久久久久久久婷婷 | 91香蕉嫩草| 黄色大全在线观看 | 欧美特一级 | 日本精品视频免费 | 色在线高清 | 欧美美女一级片 | 99久久精品国 | 麻豆视频免费在线观看 | 欧美日一级片 | 99精品免费久久久久久久久日本 | 美女亚洲精品 | 在线视频一区观看 | 亚洲免费永久精品国产 | av官网| 五月婷婷六月丁香激情 | 五月天丁香亚洲 | 国产中出在线观看 | 夜色.com | 最近中文字幕在线中文高清版 | 日韩精品中文字幕在线 | 天天射日 | 一级免费观看 | 色99色| 久久69精品 | 久久久www成人免费精品张筱雨 | 曰韩在线 | 国产美女被啪进深处喷白浆视频 | 亚洲成人av片 | 97精品国产97久久久久久粉红 | 久久经典视频 | 久草97| 日本中文字幕在线免费观看 | 日日麻批40分钟视频免费观看 | 性日韩欧美在线视频 | 日韩欧美一区二区不卡 | 91欧美精品 | 亚洲精品99久久久久中文字幕 | 日韩欧美在线观看一区 | 国产精品久久久久久久av大片 | 日一日干一干 | a视频在线观看免费 | 69久久99精品久久久久婷婷 | 精品在线亚洲视频 | 国产精品久久久久久妇 | 亚洲区另类春色综合小说校园片 | 在线天堂日本 | 国产一级电影免费观看 | 国产a国产 | 欧美久久久久 | 超碰在线观看99 | 久久精品福利视频 | 国产精品涩涩屋www在线观看 | 一本之道乱码区 | 777视频在线观看 | 综合黄色网 | 国产精品国产三级国产不产一地 | 国产成人av福利 | 九九久久国产 | 日韩高清在线不卡 | 中文av网站 | 麻豆精品91 | 亚洲精品乱码白浆高清久久久久久 | 国产精品丝袜久久久久久久不卡 | 亚洲精品字幕在线观看 | 精品视频国产 | 亚洲在线精品视频 | 五月婷激情 | 黄色中文字幕在线 | 在线成人免费电影 | 日韩欧美在线影院 | 国产精品字幕 | 亚洲一区二区三区miaa149 | 黄色软件在线观看 | 日韩av在线影视 | 午夜三级毛片 | 久久伊人爱 | 人人揉人人揉人人揉人人揉97 | 久久在线观看 | 成人在线视频一区 | 97国产在线视频 | 亚洲一区av | 国产色小视频 | 欧美 日韩 国产 中文字幕 | 欧美视频一区二 | 欧美性色网站 | 成人在线免费观看视视频 | 91黄色小视频 | 九九视频免费在线观看 | 成人网页在线免费观看 | 91传媒在线看| 一级片免费观看 | 日本激情动作片免费看 | 在线观看日韩精品 | 久久精品国产久精国产 | 亚洲资源一区 | 精品久久久成人 | 免费精品人在线二线三线 | 成人av免费在线看 | 国产精品福利在线 | 久久久久久久网 | 国产在线高清视频 | 色在线观看网站 | 在线观看国产一区二区 | 日韩电影在线视频 | 婷婷亚洲综合五月天小说 | 一区二区三区观看 | 久久久免费 | 最新国产视频 | 久操视频在线免费看 | 国产一级视频在线免费观看 | 国产丝袜美腿在线 | 色婷婷激情电影 | 国产 在线 高清 精品 | 成人在线视频一区 | 亚洲综合在线五月天 | 国产精品人成电影在线观看 | 91久久电影| 日本三级不卡 | 色婷婷五 | 狠狠躁18三区二区一区ai明星 | 99久久婷婷国产综合亚洲 | 亚洲久草网 | 高清av中文在线字幕观看1 | 一区二区三区在线免费播放 | 在线日本v二区不卡 | 91黄色成人| 久久久久久久久久久影院 | 伊人影院av| 亚洲高清在线观看视频 | 成人黄色电影免费观看 | 欧美色综合天天久久综合精品 | 亚洲综合国产精品 | 天天操天天射天天添 | 黄色大全免费网站 | 午夜性色| 五月天综合网站 | 在线视频免费观看 | 天天摸天天舔 | 天天曰天天干 | 粉嫩高清一区二区三区 | 久久免费在线观看视频 | 国产精品s色 | 国产成人1区 | 国产原创在线视频 | 免费福利小视频 | 91麻豆国产 | 久久久久久久久久伊人 | 久久视频精品 | 欧美性一级观看 | 色综合色综合色综合 | 色94色欧美| 中文字幕一区二区三区四区 | 日日夜夜人人精品 | 日韩色综合 | 国产精品原创av片国产免费 | 国产黄色看片 | 伊人影院得得 | 精品国产资源 | 国产中文欧美日韩在线 | 日本韩国中文字幕 | 在线观看视频免费大全 | 日韩在线免费观看视频 | 成年免费在线视频 | 欧美福利久久 | 狠狠干成人综合网 | 激情五月播播久久久精品 | 亚洲日本成人网 | 亚洲人成网站精品片在线观看 | 三级大片网站 | 中文在线字幕免费观看 | 日韩黄色免费电影 | 久久久久日本精品一区二区三区 | 成年人在线免费看片 | 久久午夜免费观看 | 在线观看免费日韩 | 国产福利在线免费 | 天天插天天操天天干 | 91欧美日韩国产 | 国产一级视频在线 | 成人三级av | 久久免费福利 | 激情丁香婷婷 | 欧美日韩视频在线观看免费 | 欧美色图东方 | 欧美高清成人 | 一区二区三区观看 | 五月婷婷丁香激情 | www91在线| 在线观看www视频 | 久久久久免费精品视频 | 亚洲国产精品传媒在线观看 | av免费片| 久久超碰97 | 亚洲精品99久久久久中文字幕 | 成人av一级片 | 成人在线免费看视频 | 国产精品破处视频 | 国产福利免费看 | 波多野结依在线观看 | 国产中文字幕在线看 | 精品国产美女 | 在线观看成人av | 日韩视频欧美视频 | 中文字幕一区二区三区乱码不卡 | 国产精品一区二区吃奶在线观看 | 欧亚日韩精品一区二区在线 | 免费观看黄色12片一级视频 | 国产无套精品久久久久久 | 日韩中文字幕在线不卡 | 日日躁天天躁 | 黄色三级免费网址 | 中文字幕文字幕一区二区 | 四虎国产精品免费观看视频优播 | 成人在线观看免费视频 | 黄色的视频网站 | 黄色性av| 日韩高清成人在线 | 欧美日韩高清在线 | 色综合久久88色综合天天 | 国产精品美女久久久免费 | 一级做a视频 | 久影院 | 超碰在线天天 | 日韩黄色中文字幕 | 中文字幕国产精品一区二区 | 91九色老| 国产精品一区二区中文字幕 | 日韩欧美综合在线视频 | 中文字幕免费在线看 | 亚洲精品国久久99热 | 亚洲三区在线 | 97免费视频在线 | 亚洲精品午夜aaa久久久 | 日本高清免费中文字幕 | 国产高清在线视频 | 天天草网站 | 成人免费在线视频观看 | 欧美一级片在线免费观看 | 亚洲精品国精品久久99热一 | 最新国产在线视频 | 在线观看深夜视频 | 91麻豆精品国产91 | 精品成人免费 | 国产精品99久久99久久久二8 | 国产夫妻自拍av | 一区二区 不卡 | 伊人首页 | 国产黄色片免费在线观看 | 国产成人三级在线播放 | 99视频在线免费播放 | 六月丁香综合 | 91av视频观看 | 亚洲国产精品久久久久久 | 久久国语露脸国产精品电影 | 在线观看日韩精品视频 | 成人国产精品一区 | 亚洲精品乱码久久久久久蜜桃欧美 | 西西444www大胆无视频 | 亚洲欧美综合精品久久成人 | 色a4yy| 欧美日韩国产一区二区在线观看 | 91成人免费视频 | 色中色亚洲 | 亚洲视频在线播放 | 精品久久久精品 | 亚洲 欧洲 国产 日本 综合 | 久久久久久久久久久久久久电影 | 蜜臀久久99精品久久久无需会员 | 又粗又长又大又爽又黄少妇毛片 | 国产精品一区二区你懂的 | 视频国产区 | 亚洲精品在线视频播放 | 91亚洲精品久久久 | 国产黄色精品视频 | 久久久999精品视频 国产美女免费观看 | 亚洲 欧美 国产 va在线影院 | 五月婷婷中文字幕 | 免费色视频在线 | 日韩一区二区三区观看 | 色综合天天综合 | 国内精品久久久久影院男同志 | 天天操天天综合网 | 久久爽久久爽久久av东京爽 | 欧美视频99 | 中文字幕在 | 一区二区理论片 | 国产黄色大片 | 亚洲精品欧美专区 | 国产精品美女www爽爽爽视频 | 久久99在线 | 国产中文字幕在线视频 | 天天操天天干天天插 | 国产在线免费观看 | 天天操天天操天天操天天操天天操 | 丁香激情五月婷婷 | 久久国产精品区 | 一区二区三区中文字幕在线 | 五月色丁香 | 天堂在线视频中文网 | 久久久精品福利视频 | 狠狠狠色丁香婷婷综合久久88 | 国产精品久久久久久五月尺 | 久艹在线免费观看 | 国产成人精品久久二区二区 | 美女视频免费精品 | 久久精品国产成人 | 999久久久精品视频 日韩高清www | 欧美一级高清片 | 日本h视频在线观看 | 久久精品国产成人精品 | 日韩欧美网址 | 国产精品一区二区三区观看 | 久久精品视频在线 | 丝袜制服综合网 | 九色精品免费永久在线 | 亚洲欧洲av在线 | 五月婷婷在线观看视频 | www免费看片com | 国产亚洲精品无 | 国产破处在线视频 | 国产丝袜在线 | 国内精品福利视频 | 91av免费在线观看 | 精品字幕在线 | 国内免费久久久久久久久久久 | 美女网站色免费 | 国产黄色在线看 | 成人a视频片观看免费 | 五月综合激情 | 久草a在线| 少妇性aaaaaaaaa视频 | 中文av在线天堂 | 日韩精品一区二区不卡 | 欧美日韩在线精品 | 久久久久久黄色 | 人人澡人摸人人添学生av | 97成人在线免费视频 | 亚洲综合最新在线 | 久久伊人婷婷 | aaa黄色毛片 | 天天爽夜夜爽人人爽一区二区 | 久爱综合 | 91成人免费观看视频 | 久久久午夜精品理论片中文字幕 | 久久国产免费视频 | 四虎国产永久在线精品 | 91av小视频| 国产精品一区二区你懂的 | 中文字幕成人一区 | 波多野结衣在线播放一区 | 黄色视屏免费在线观看 | 亚洲成av人片在线观看www | 亚洲成a人片综合在线 | 成人国产精品一区 | 干干干操操操 | 五月婷婷久 | 国产午夜精品久久久久久久久久 | 狠狠色丁香婷婷综合久久片 | 免费黄色a级毛片 | 奇米7777狠狠狠琪琪视频 | 手机在线免费av | 日韩欧美高清 | 国产成人av在线 | 久久99久久久久久 | 亚洲视频免费在线 | 国产一区二区久久久 | 97电影在线看视频 | 成人精品视频久久久久 | 精品久久久免费视频 | 精品国产一区二区三区久久久蜜月 | 久久99精品久久只有精品 | 亚洲第一区在线播放 | 天天草网站 | 国产h片在线观看 | 就要干b | 日韩不卡高清视频 | 超碰免费观看 | 日本精品小视频 | 97在线资源| 国产精品免费观看久久 | 久久99精品国产99久久6尤 | 在线观看视频色 | 狠狠操天天操 | 天天色宗合 | 国产精品久久人 | 国产精品久久久久婷婷 | 国产在线一区二区三区播放 | 天天干天天搞天天射 | 精品国内 | 亚洲国产精品va在线看黑人动漫 | 97热视频| 久久综合五月天婷婷伊人 | 操操综合网 | 欧美亚洲xxx| 久久久久久久久国产 | 美女网站视频久久 | 黄色av一级 | 亚洲成年人免费网站 | 国产在线国偷精品产拍免费yy | 亚洲精品国产欧美在线观看 | 亚洲精品视频免费看 | 探花视频在线观看 | 丁香五月亚洲综合在线 | 五月天综合网站 | 国产精品欧美在线 | 国产精品一区二区中文字幕 | 在线 影视 一区 | 天天草天天草 | 亚洲综合视频网 | 四虎最新域名 | 久久亚洲私人国产精品va | 国产日韩欧美精品在线观看 | 中文字幕在线色 | 欧美日韩有码 | www视频在线观看 | 国产手机在线播放 | 婷香五月 | 黄色成年片 | 国产免费久久久久 | 波多野结衣一区二区 | 天天摸日日操 | www.国产在线观看 | 日韩在观看线 | 久久精品首页 | 激情导航 | 久久99精品久久久久婷婷 | 中文免费 | 操操日日| 99久高清在线观看视频99精品热在线观看视频 | 国产精品视频你懂的 | 狠狠躁夜夜躁人人爽超碰91 | 激情网五月婷婷 | 色.com| 久久夜色精品国产欧美一区麻豆 | 国产片免费在线观看视频 | 国产高清黄 | 国产精品视频永久免费播放 | 国内精品久久久久影院一蜜桃 | 麻豆va一区二区三区久久浪 | 中文字幕在线不卡国产视频 | 欧美午夜寂寞影院 | 国产精品久久久久久久免费 | 97碰在线 | 在线观看视频中文字幕 | 久福利 | 狠狠操狠狠插 | 8090yy亚洲精品久久 | 久操中文字幕在线观看 | 国产精品一区二区三区在线 | 国产精品自产拍在线观看桃花 | 精品久久久免费视频 | 不卡视频国产 | 欧美日韩精品国产 | 在线观看中文字幕 | 五月天天色| 成全免费观看视频 | 一区二区三区观看 | 成人h动漫在线看 | 亚洲性xxxx| 亚洲 欧美 另类人妖 | 亚洲午夜剧场 | 成人久久18免费网站麻豆 | 久久99在线观看 | 九九视频热| 欧美坐爱视频 | 中文字幕av全部资源www中文字幕在线观看 | 丝袜网站在线观看 | 欧美激情视频一区二区三区 | 91在线免费播放视频 | 天天射天天干天天操 | 美女免费视频一区二区 | 99热超碰 | 麻花天美星空视频 | 久草99| 久久久999免费视频 日韩网站在线 | 日韩二区在线观看 | 婷婷综合亚洲 | 国产成人精品一区二区三区在线观看 | 国产精品久久久久av福利动漫 | 免费视频久久久久久久 | 午夜精选视频 | 手机色站 | 99精品热视频只有精品10 | 在线播放 日韩专区 | 久久久久久99精品 | 精品在线观看一区二区三区 | 999视频在线播放 | 国产精品观看视频 | 久久国产亚洲 | 正在播放国产一区二区 | 久久久国产精品人人片99精片欧美一 | 少妇高潮流白浆在线观看 | 91中文字幕视频 | 日韩欧美一区二区三区视频 | 日韩网站在线免费观看 | 亚洲狠狠干 | 91最新在线视频 | 免费又黄又爽视频 | 久久久久久久久久久久久久电影 | 久久免费精品 | 亚洲成人国产精品 | 国产精品久久久久久a | 国产精品免费在线观看视频 | 日韩手机在线观看 | 精品国产一区二区三区av性色 | 欧美精品生活片 | 中文在线亚洲 | 丁香六月婷婷开心婷婷网 | 国产在线精品一区二区 | 超碰97.com | 精品91久久久久 | 亚洲最大色 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 中文字幕综合在线 | 综合天天久久 | 国产综合片 | 亚洲综合在 | 精品福利网站 | 久久99精品热在线观看 | 久草视频中文在线 | 久草视频在线资源站 | 公与妇乱理三级xxx 在线观看视频在线观看 | 日韩精品久久久久久久电影竹菊 | 天天操天天操天天操天天操天天操 | 色综合夜色一区 | 国产又粗又猛又色 | 日韩精品五月天 | 亚洲黄色激情小说 | 国产成人精品一区二 | 亚洲免费一级电影 | 婷婷久久综合网 | 69亚洲乱 | 国产精品成人自拍 | 国产在线精品播放 | 国产精品毛片久久蜜 | 亚洲影院色 | 亚洲性少妇性猛交wwww乱大交 | 国产精品手机在线 | 欧美午夜久久久 | 色偷偷网站视频 | 免费av在线播放 | 国产亚洲无 | 亚洲精品永久免费视频 | 成年人免费在线观看网站 | 国产拍揄自揄精品视频麻豆 | 91传媒激情理伦片 | 婷婷深爱| 日韩欧美精品一区二区 | 国产成人三级一区二区在线观看一 | 天天爱综合 | 极品中文字幕 | www激情久久 | 天天操天天爱天天干 | 激情视频在线观看网址 | 亚洲最大av网站 | 中文字幕一区二区三区乱码在线 | 免费中午字幕无吗 | 狠狠躁日日躁 | 午夜久久网 | 不卡av在线播放 | 国产日产精品一区二区三区四区的观看方式 | 精品久久久影院 | 日韩精品一区二区三区视频播放 | 亚洲麻豆精品 | 日韩美女一级片 | 91av视频免费在线观看 | www色,com| 久久草在线精品 | 蜜臀av夜夜澡人人爽人人 | 国产精品久久久久久久久久ktv | 欧美一级免费高清 | 国内精品久久久久久久影视简单 | 成人午夜电影在线 | 中文字幕在线观看1 | 亚洲国产成人精品久久 | 91亚洲精品久久久蜜桃网站 | 黄网站免费看 | 99精品视频免费看 | 麻豆一精品传二传媒短视频 | 国产一区二区手机在线观看 | 国产中年夫妇高潮精品视频 | 国产精品不卡在线观看 | 深爱五月激情网 | 丁香免费视频 | 视频成人 | 91精品少妇偷拍99 | 日日夜夜天天操 | 69国产盗摄一区二区三区五区 | 成人性生交大片免费看中文网站 | 精品国产免费看 | 大型av综合网站 | 亚洲欧美视频在线观看 | 久久综合精品国产一区二区三区 | 天天干天天拍天天操 | 狠狠的日| 在线观看免费黄视频 | 亚洲 中文 欧美 日韩vr 在线 | 91在线区 | 国产午夜精品一区二区三区嫩草 | 色综合中文综合网 | 国产少妇在线观看 | 91麻豆精品国产自产在线 | 欧美精品国产精品 | 成在人线av | 少妇性bbb搡bbb爽爽爽欧美 | 国产精品涩涩屋www在线观看 | 奇米网网址 | 中文亚洲欧美日韩 | 亚洲免费av电影 | 中文字幕xxxx | 五月导航 | 日本精品视频在线 | 日韩午夜三级 | 中文字幕在线观看亚洲 | 99精品国产免费久久久久久下载 | 精品中文字幕视频 | 91一区啪爱嗯打偷拍欧美 | 久久不见久久见免费影院 | av在线直接看 | 最近日韩中文字幕中文 | 九九在线精品视频 | 91在线观看欧美日韩 | 国产区精品| 手机av在线网站 | 最近中文字幕视频完整版 | 国产不卡在线观看视频 | 国产精品九九九九九 | 欧美日韩在线免费观看视频 | 国产精品99久久久久人中文网介绍 | 日韩视频一区二区三区 | 青草视频在线免费 | 99久久超碰中文字幕伊人 | 天天操天天综合网 | 午夜精品一区二区国产 | 欧美一二三四在线 | 操操操日日日干干干 | 成人免费视频观看 | 狠狠色狠狠色综合日日92 | 91人人人| 欧美色操 | 亚洲日韩精品欧美一区二区 | 久久久久综合精品福利啪啪 | 国产xvideos免费视频播放 | 午夜久久 | 91精彩视频 | av大全在线免费观看 | 狠狠色婷婷丁香六月 | 中文字幕乱在线伦视频中文字幕乱码在线 | 久久久www成人免费精品张筱雨 | 婷婷色网址| 91香蕉视频在线 | a色网站 | 久久情侣偷拍 | 久久久久一区二区三区 | 黄色在线观看免费 | 国产一级做a爱片久久毛片a | 99久久99久久免费精品蜜臀 | 欧美日韩国产一区 | 久草香蕉在线视频 | 美女在线观看网站 | 五月天婷婷免费视频 | 国产偷v国产偷∨精品视频 在线草 | 久久久久久久久久久影院 | 天天操操操操操操 | 国产亚洲人 | 久久99精品久久只有精品 | 成人午夜久久 | 国产精品99久久久久久久久 | 欧美性生活免费 | 天天曰| 在线观看日韩专区 | 激情五月综合网 | 欧美aa在线| h视频在线看 | 午夜精品久久久久 | www.五月婷婷 | 最新色站| 婷婷久久网 | 国产精彩视频一区 | 色网站国产精品 | 69视频网站| 欧美另类人妖 | 一区二区三区四区在线 | 美女国内精品自产拍在线播放 | 最新黄色av网址 | 国产视频在线免费 | a午夜在线 | 日韩成片 | 五月激情六月丁香 | 国产精品视频免费观看 | 亚洲最大激情中文字幕 | 六月丁香在线视频 | 美女黄久久 | 九七人人干 | 五月开心六月伊人色婷婷 | 中文久久精品 | 超碰精品在线观看 | 亚洲精品中文字幕在线 | 亚洲成av人影院 | 三级毛片视频 | 久草在线视频免赞 | 欧美日韩视频一区二区三区 | 国产91影视 | 337p西西人体大胆瓣开下部 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产精品毛片久久久久久久 | 日韩精品在线播放 | 亚洲五月激情 | 91麻豆网站 | 欧美一区视频 | 国产成人精品久久亚洲高清不卡 | 在线观看v片 | 色婷婷激情五月 | 草久电影 | 精品国产伦一区二区三区观看体验 | 免费在线播放av电影 | 久久艹久久 | 成人黄色在线视频 | 一区二区免费不卡在线 | 亚洲欧美怡红院 | 免费看成年人 | 亚洲日韩欧美一区二区在线 | 九九亚洲视频 | 久久精品久久精品久久 | 中文字幕丝袜一区二区 | 日本一区二区不卡高清 | 一色av | 亚洲激情综合 | 探花视频在线观看 | 国产精品不卡av | 91免费国产在线观看 | 美女视频黄免费的久久 | 久久a v视频 | 日韩在线精品视频 | 国产免费专区 | 五月天久久激情 | 国产一区二区免费 | 亚洲精品视频在线 | 中文网丁香综合网 | 日韩va在线观看 | 午夜久久影视 | 久久理论影院 | 一区二区三区 中文字幕 | 免费看黄在线 | 免费一级片视频 | 最新av在线免费观看 | 久久免费福利 | 亚洲综合欧美日韩狠狠色 | 免费av大全 | 国产精品激情偷乱一区二区∴ | 91免费视频黄 | 中文字幕av免费观看 | 中文字幕国产在线 | 9在线观看免费高清完整 | 久久亚洲免费 | 韩国一区二区三区在线观看 | 午夜国产福利在线 | 日韩视频在线观看视频 | 黄色三级在线观看 | 国产尤物一区二区三区 | 啪啪肉肉污av国网站 | 综合在线观看色 | 97综合视频| 成人av电影免费在线观看 | 亚洲爱av| 久久高清免费观看 | 日本中文字幕在线看 | 国产录像在线观看 | 日韩视频中文字幕在线观看 | 欧美伦理一区 | 色网站在线免费观看 | 日韩精品免费一区二区在线观看 | 欧美日韩在线视频观看 | 美女亚洲精品 | 日韩av专区| 精品国产免费看 | 性色av免费在线观看 | 午夜精品一区二区国产 | 99精品国产福利在线观看免费 | 久久久久久久久影院 | 国产精品不卡在线观看 | 天天天色综合 | 美女视频网站久久 | 日本在线成人 | 片黄色毛片黄色毛片 | 日韩精品免费在线观看 | 黄色电影网站在线观看 | 免费成人在线观看视频 | 久久久久久国产精品免费 | 一区二区视频在线观看免费 | 成人一区二区三区在线观看 | 国产97免费| 亚洲第一区在线播放 | 国产精品一区二区久久精品爱涩 | 国产第一页福利影院 | 黄色官网在线观看 | 久久神马影院 | 国产精品一区久久久久 | 国内精品久久久久久久久久清纯 | 91免费视频网站在线观看 | 中文字幕欧美日韩va免费视频 | 日韩av电影手机在线观看 | 国产精品久久久久久久久久尿 | 久热爱| 天天做天天爱天天爽综合网 | 国产精品一区二区久久国产 | 亚洲成av人片在线观看www | 国产一级免费片 | 成人午夜精品久久久久久久3d | 久久69av| 婷婷五综合 | 又黄又爽又色无遮挡免费 | 超碰在线cao | 91精品国产高清自在线观看 | 九九热国产视频 | 久久综合中文字幕 | 在线 视频 一区二区 | 中文字幕在线免费 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 玖玖视频免费在线 | 国产福利91精品张津瑜 | 免费看麻豆 | 99精品视频在线观看播放 | 福利电影久久 | 久草在线看片 | 国产精品久久久久aaaa九色 | 国产99精品在线观看 | 男女视频91 | 久久久久日本精品一区二区三区 | 毛片网站在线看 | 国产成人综 | 国产精品6999成人免费视频 | 99久久日韩精品免费热麻豆美女 | 一个色综合网站 | 国产精品高潮久久av | 91麻豆精品国产午夜天堂 | 黄色特一级片 | 岛国av在线 | 国产亚洲精品久久久久久久久久久久 | 亚洲日本va午夜在线电影 | 91麻豆精品91久久久久同性 | 亚洲精品黄色在线观看 | 国产一区二区三区 在线 | 亚洲 综合 国产 精品 | 色综合久久久久综合体 | 国产精品免费观看国产网曝瓜 | 青青河边草免费视频 | 69视频网站 | 一级α片| 久久理论影院 | 国产一级精品在线观看 | 国产成人精品一区二区三区网站观看 | 国产在线97 | 国产成人精品一区二区三区网站观看 | 激情婷婷亚洲 | 涩涩成人在线 | 国产在线一区观看 | 天天爱天天操 | 麻豆免费视频观看 | 在线99 | 亚洲一区美女视频在线观看免费 | 在线国产一区二区 | 久久久久久福利 | 伊人久久五月天 | 亚洲国产理论片 | 中文在线亚洲 | 日本久久精品视频 | 夜色.com| 91人人爽人人爽人人精88v | 久久毛片视频 | 日韩免费一二三区 | 在线观看你懂的网站 | 青草视频在线 | 免费av网址大全 | 欧美日韩免费网站 | 国产精品 9999 | 国产美女在线免费观看 | 国产美女在线精品免费观看 | 黄色影院在线免费观看 | 久一网站| 国产精品一码二码三码在线 | 成人欧美一区二区三区黑人麻豆 | 日本二区三区在线 | 91精品国产九九九久久久亚洲 | 国产日产高清dvd碟片 | www.色在线| 亚洲成a人片77777潘金莲 | 在线观看黄色免费视频 | 日韩高清免费在线观看 | 成人久久久电影 | av在线电影免费观看 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 久久久黄色免费网站 | 亚洲一区视频免费观看 | 国产欧美在线一区二区三区 | 久草在线综合网 | 精品国产成人在线 | 日韩www在线 | 黄色毛片网站在线观看 | 久草在线资源免费 | 国产人成一区二区三区影院 | 精品成人免费 | 欧美中文字幕久久 | 日韩一区二区三区不卡 | 久久久久久国产精品亚洲78 | 亚洲国产美女精品久久久久∴ | 在线看污网站 | 成 人 黄 色 片 在线播放 | 欧美一级片免费在线观看 | 欧美不卡视频在线 | 国产一性一爱一乱一交 | 黄色三级在线看 | 99久久免费看 | 中文字幕观看av | 国产不卡在线视频 | 国产日本三级 | 亚洲久草在线视频 | 国内精品久久天天躁人人爽 | 91porny九色在线播放 | 国产免费资源 | 伊人影院在线观看 | 亚洲综合婷婷 | 欧美一区二区精美视频 | 国产精品一区二区免费 | 精品一二三区 | 91精品久久久久久久99蜜桃 | 99久久视频| 91色一区二区三区 | 国产精品久久久久久婷婷天堂 | 日韩免费视频 | 亚洲欧洲精品视频 | 国产精品黄色 | 天天爽天天射 | 亚洲va欧美va| 综合五月 | 国产精品久久久99 | 久久精品黄| 超碰在线色 | 国产精品一区免费观看 | 二区三区在线 | 五月婷婷色综合 | 欧美少妇xxxxxx| 欧美精品久久人人躁人人爽 | 午夜久久久久久久久久久 | 国产精品久久久久久久久久99 | 国产精品成人在线 | 欧美黑人巨大xxxxx | 亚洲国产精品第一区二区 | a黄色一级片 | 国产精品扒开做爽爽的视频 | 81国产精品久久久久久久久久 |