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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Resnet的pytorch官方实现代码解读

發布時間:2025/3/15 编程问答 80 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Resnet的pytorch官方实现代码解读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Resnet的pytorch官方實現代碼解讀

目錄

    • Resnet的pytorch官方實現代碼解讀
  • 前言
  • 概述
    • 34層網絡結構的“平原”網絡與“殘差”網絡的結構圖對比
    • 不同結構的resnet的網絡架構設計
    • resnet代碼細節分析

前言

pytorch官方給出了現在的常見的經典網絡的torch版本實現。仔細看看這些網絡結構的實現,可以發現官方給出的代碼比較精簡,大部分致力于實現最樸素結構,沒有用很多的技巧,在網絡結構之外的分組卷積、膨脹卷積等等技巧已經略去(分組數目設置為1,膨脹系數設置為1),為理解網絡結構略去了很多不必要的麻煩。

概述

34層網絡結構的“平原”網絡與“殘差”網絡的結構圖對比

先給出一個34層的神經網絡,并比較加入殘差前后的結構。

不同結構的resnet的網絡架構設計

resnet有很多不一樣的結構變種,大體上的框架沒有變化,都是在原來的“直通”式結構的基礎上加上跳躍連接,變化的是網絡層數是參數量。

resnet代碼細節分析

這個系列的博客致力于分析代碼的細節,略過網絡結構的優缺點理論分析,下面講講resnet是具體怎么操作的。

import torch from torch import Tensor import torch.nn as nn from .utils import load_state_dict_from_url from typing import Type, Any, Callable, Union, List, Optional # 所有可用的網絡模型的名稱 __all__ = ['ResNet', 'resnet18', 'resnet34', 'resnet50', 'resnet101','resnet152', 'resnext50_32x4d', 'resnext101_32x8d','wide_resnet50_2', 'wide_resnet101_2'] # 預訓練權重的下載地址,通過model_urls這個字典的key獲取對應的鍵值value,也就是下載地址 model_urls = {'resnet18': 'https://download.pytorch.org/models/resnet18-5c106cde.pth','resnet34': 'https://download.pytorch.org/models/resnet34-333f7ec4.pth','resnet50': 'https://download.pytorch.org/models/resnet50-19c8e357.pth','resnet101': 'https://download.pytorch.org/models/resnet101-5d3b4d8f.pth','resnet152': 'https://download.pytorch.org/models/resnet152-b121ed2d.pth','resnext50_32x4d': 'https://download.pytorch.org/models/resnext50_32x4d-7cdf4587.pth','resnext101_32x8d': 'https://download.pytorch.org/models/resnext101_32x8d-8ba56ff5.pth','wide_resnet50_2': 'https://download.pytorch.org/models/wide_resnet50_2-95faca4d.pth','wide_resnet101_2': 'https://download.pytorch.org/models/wide_resnet101_2-32ee1156.pth',} # 將conv2d封裝起來,其中第一個參數代表input_channels,第二個參數代表output_channels # 對conv2d的封裝其實作用不大,也可以不封裝,直接輸入輸入維度、輸出維度、卷積核大小、 # 步長、補零值、分組卷積數量、膨脹卷積數量、偏置的值 def conv3x3(in_planes:int,out_planes:int, stride:int = 1, groups:int = 1, dilation: int = 1)->nn.conv2d:return nn.conv2d(in_planes,out_planes,kernel_size = 3,stride = stride, padding = dilation, groups = groups,bias = False,dilation = dilation)def conv1x1(in_planes:int,out_planes:int, stride:int = 1)->nn.conv2d:return nn.conv2d(in_planes,out_planes,kernel_size = 1,stride = stride, bias = False) # 定義基礎版的參數模塊,由兩個3x3的卷積疊加而成 class BasicBlock(nn.Module):expansion: int = 1def __init__(self,inplanes:int,planes:int,stride:int = 1,downsample:Optional[nn.Module] = None,# 分組卷積,這里設置groups = 1,也就是不分組卷積groups:int = 1,base_width:int = 64,# 膨脹卷積的膨脹系數設為1,也就是不膨脹卷積dilation:int = 1,norm_layer:Optional[Callable[..,nn.Module]] = None)->None:# 超父類,習慣上在一個類的開頭寫上super(class_name, self).__init__()來進行初始化super(BasicBlock,self).__init__()# 加上batch_normlization層if norm_layer is None:norm_layer = nn.BatchNorm2d# 異常判斷if groups != 1 or base_width != 64:raise ValueError('BasicBlock only supports groups=1 and base_width=64')if dilation > 1:raise NotImplementError('Dilation > 1 not supported in BasicBlock')# 最普通的conv、bn、relu流程self.conv1 = conv3x3(inplanes,planes,stride)self.bn1 = norm_layer(planes)self.relu = nn.ReLU(inplace = True)self.conv2 = conv3x3(planes,planes)self.bn2 = norm_layer(planes)self.downsample = downsampleself.stride = stridedef forward(self,x:Tensor)->Tensor:indentity = xout = self.conv1(x)out = self.bn1(out)out = self.relu(out)out = self.conv2(out)out = self.bn2(out)# 如果出現下采樣,要對輸入的數據做上采樣(乘以expansion系數),這樣才能保證輸入輸出的維度一致,# 這樣子兩個tensor才能夠相加if downsample is not None:identity = self.downsample(x)# 加上輸入out+=identityout = self.relu(out)return out # 加強版的殘差網絡,與基礎版本的不同之處在于從兩個3x3卷積變成了 # 1x1、3x3、1x1卷積,前一個1x1卷積用來壓縮維度,后一個1x1卷積用來恢復維度 # 卷積的時候都把bias設成False了,這是因為每次卷積之后都會做一個bn的操作, # 經過bn操作,會生成新的數據分布,偏置項的作用將被消除掉,所以不用加偏置 class Bottleneck(nn.Module):expansion: int = 4def __init__(self,inplanes:int,planes:int,stride:int = 1,downsample:Optional[nn.Module] = None,groups:int = 1,base_width:int = 64,dilation:int = 1,norm_layer:Optional[Callable[..,nn.Module]] = None)->None:super(BasicBlock,self).__init__()if norm_layer is None:norm_layer = nn.BatchNorm2dwidth = int(planes*(base_width/64.))*groupsself.conv1 = conv1x1(inplanes,width)self.bn1 = norm_layer(width)self.conv2 = conv3x3(width,width,stride,groups,dilation)self.bn2 = norm_layer(width)self.conv3 = conv1x1(width,width,stride,groups,dilation)self.bn3 = norm_layer(planes*self.expansion)self.relu = nn.ReLU(inplace=True)self.downsample = downsampleself.stride = stridedef forward(self,x:Tensor)->Tensor:indentity = xout = self.conv1(x)out = self.bn1(out)out = self.relu(out)out = self.conv2(out)out = self.bn2(out)out = self.relu(out)out = self.conv3(out)out = self.bn3(out)# 如果出現下采樣,要對輸入的數據做上采樣(乘以expansion系數),這樣才能保證輸入輸出的維度一致,# 這樣子兩個tensor才能夠相加if downsample is not None:identity = self.downsample(x)out+=identityout = self.relu(out)return outclass Resnet:def __init__(self,block:Type[Union[[BasicBlock,Bottleneck]],layers:List[int],num_classes:int = 1000,zero_init_residual:bool = False,groups: int = 1,width_per_group:int = 64,replace_stride_with_dilation:Optional[List[bool]] = None,norm_layer = Optional[Callable[..,nn.Module]] = None)->None:super(Resnet,self).__init__()if norm_layer is None:norm_layer = nn.BatchNorm2dself._norm_layer = norm_layerself.inplanes = 64self.dilation = 1if replace_stride_with_dilation is None:replace_stride_with_dilation = [False,False,False]if len(replace_stride_with_dilation)!=3:raise ValueError("replace_stride_with_dilation should be None ""or a 3-element tuple, got {}".format(replace_stride_with_dilation))self.groups = groupsself.base_width = width_per_groupself.conv1 = nn.Conv2d(3,self.inplanes,kernel_size = 7,stride = 2, padding = 3,bias = False)self.bn1 = norm_layer(self.inplanes)self.relu = nn.ReLU(inplace = True)self.maxpool = nn.MaxPool2d(kernel_size = 3,stride = 2,padding = 1)self.layer1 = self._make_layer(block,64,layers[0])self.layer2 = self._make_layer(block,128,layers[1],stride = 2, dilate = replace_stride_with_dilation[0])self.layer3 = self._make_layer(block,256,layers[2],stride = 2, dilate = replace_stride_with_dilation[1])self.layer4 = self._make_layer(block,512,layers[3],stride = 2, dilate = replace_stride_with_dilation[2])self.avgpool = nn.AdaptiveAvgPool2d((1,1))self.fc = nn.Linear(512*block.expansion,num_classes)for m in self.modules():if isinstance(m,nn.Conv2d):nn.init.kaiming_normal_(m.weight, mode = 'fan_out',nonlinearity='relu')elif isinstance(m,(nn.BatchNorm2d,nn.GroupNorm)):nn.init.constant_(m.weight,1)nn.init.constant_(m.bias,0)if zero_init_residual:for m in self.modules():if isinstance(m,Bottleneck):nn.init.constant_(m.bn3.weight,0)elif isinstance(m,BasicBlock):nn.init.constant_(m.bn2.weight,0)def _make_layer(self,block:Type[Union[BasicBlock,Bottleneck]],planes:int, blocks:int,stride:int = 1,dilate:bool = False)->nn.Sequential:norm_layer = self._norm_layerdownsample = Noneprevious_dilation = self.dilationif dilate:self.dilation*=stridestride = 1if stride != 1 or self.inplanes != planes*block.expansion:# downsample就是一堆1x1的卷積核接bn操作,目的是為了讓殘差連接的tensor的通道數能夠對應的上downsample = nn.Sequential(conv1x1(self.inplanes,planes*block.expansion,stride),norm_layer(planes*block.expansion),)layers = []layers.append(block(self.inplanes,planes,stride,downsample,self.groups,self.base_width,previous_dilation,norm_layer))self.inplanes = planes*block.expansionfor _ in range(1,blocks):layers.append(block(self.inplanes,planes,groups = self.groups,base_width = self.base_width, dilation = self.dilation ,norm_layer))# 將網絡結構打包成Sequential格式返回的好處在于不用每次都# 在函數里面寫conv、relu、maxpool的操作,直接打包成一個功能列表送進去# *layers,單個*號表示這個位置接收任意多個非關鍵字參數,并且轉化成列表return nn.Sequential(*layers)def _forward_impl(self,x:Tensor)->Tensor:x = self.conv1(x)x = self.bn1(x)x = self.relu(x)x = self.maxpool(x)x = self.layer1(x)x = self.layer2(x)x = self.layer3(x)x = self.layer4(x)x = self.avgpool(x)x = x.view(x.size(0),-1)x = self.fc(x)return xdef forward(self,x:Tensor)->Tensor:return self._forward_impl(x)# 輸入basicblock或bottleneck以及layers參數,返回resnet網絡結構 def _resnet(arch:str,block:Type[Union[BasicBlock,Bottleneck]],layers:List[int],pretrained:bool,progress:bool,**kwargs:Any )->Resnet:model = Resnet(block,layers,**kwargs)if pretrained:state_dict = load_state_dict_from_url(model_urls[arch],progress = progress)model.load_state_dict_from_url(state_dict)return model # 預定義的resnet不同結構 def resnet18(pretrained:bool = False, progress: bool = True, **kwargs: Any)->ResNet:return _resnet('resnet18',BasicBlock,[2,2,2,2],pretrained, progress, **kwargs) def resnet34(pretrained: bool = False, progress: bool = True, **kwargs: Any) -> ResNet:r"""ResNet-34 model from`"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.pdf>`_.Args:pretrained (bool): If True, returns a model pre-trained on ImageNetprogress (bool): If True, displays a progress bar of the download to stderr"""return _resnet('resnet34', BasicBlock, [3, 4, 6, 3], pretrained, progress,**kwargs)def resnet50(pretrained: bool = False, progress: bool = True, **kwargs: Any) -> ResNet:r"""ResNet-50 model from`"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.pdf>`_.Args:pretrained (bool): If True, returns a model pre-trained on ImageNetprogress (bool): If True, displays a progress bar of the download to stderr"""return _resnet('resnet50', Bottleneck, [3, 4, 6, 3], pretrained, progress,**kwargs)def resnet101(pretrained: bool = False, progress: bool = True, **kwargs: Any) -> ResNet:r"""ResNet-101 model from`"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.pdf>`_.Args:pretrained (bool): If True, returns a model pre-trained on ImageNetprogress (bool): If True, displays a progress bar of the download to stderr"""return _resnet('resnet101', Bottleneck, [3, 4, 23, 3], pretrained, progress,**kwargs)def resnet152(pretrained: bool = False, progress: bool = True, **kwargs: Any) -> ResNet:r"""ResNet-152 model from`"Deep Residual Learning for Image Recognition" <https://arxiv.org/pdf/1512.03385.pdf>`_.Args:pretrained (bool): If True, returns a model pre-trained on ImageNetprogress (bool): If True, displays a progress bar of the download to stderr"""return _resnet('resnet152', Bottleneck, [3, 8, 36, 3], pretrained, progress,**kwargs)def resnext50_32x4d(pretrained: bool = False, progress: bool = True, **kwargs: Any) -> ResNet:r"""ResNeXt-50 32x4d model from`"Aggregated Residual Transformation for Deep Neural Networks" <https://arxiv.org/pdf/1611.05431.pdf>`_.Args:pretrained (bool): If True, returns a model pre-trained on ImageNetprogress (bool): If True, displays a progress bar of the download to stderr"""kwargs['groups'] = 32kwargs['width_per_group'] = 4return _resnet('resnext50_32x4d', Bottleneck, [3, 4, 6, 3],pretrained, progress, **kwargs)def resnext101_32x8d(pretrained: bool = False, progress: bool = True, **kwargs: Any) -> ResNet:r"""ResNeXt-101 32x8d model from`"Aggregated Residual Transformation for Deep Neural Networks" <https://arxiv.org/pdf/1611.05431.pdf>`_.Args:pretrained (bool): If True, returns a model pre-trained on ImageNetprogress (bool): If True, displays a progress bar of the download to stderr"""kwargs['groups'] = 32kwargs['width_per_group'] = 8return _resnet('resnext101_32x8d', Bottleneck, [3, 4, 23, 3],pretrained, progress, **kwargs)def wide_resnet50_2(pretrained: bool = False, progress: bool = True, **kwargs: Any) -> ResNet:r"""Wide ResNet-50-2 model from`"Wide Residual Networks" <https://arxiv.org/pdf/1605.07146.pdf>`_.The model is the same as ResNet except for the bottleneck number of channelswhich is twice larger in every block. The number of channels in outer 1x1convolutions is the same, e.g. last block in ResNet-50 has 2048-512-2048channels, and in Wide ResNet-50-2 has 2048-1024-2048.Args:pretrained (bool): If True, returns a model pre-trained on ImageNetprogress (bool): If True, displays a progress bar of the download to stderr"""kwargs['width_per_group'] = 64 * 2return _resnet('wide_resnet50_2', Bottleneck, [3, 4, 6, 3],pretrained, progress, **kwargs)def wide_resnet101_2(pretrained: bool = False, progress: bool = True, **kwargs: Any) -> ResNet:r"""Wide ResNet-101-2 model from`"Wide Residual Networks" <https://arxiv.org/pdf/1605.07146.pdf>`_.The model is the same as ResNet except for the bottleneck number of channelswhich is twice larger in every block. The number of channels in outer 1x1convolutions is the same, e.g. last block in ResNet-50 has 2048-512-2048channels, and in Wide ResNet-50-2 has 2048-1024-2048.Args:pretrained (bool): If True, returns a model pre-trained on ImageNetprogress (bool): If True, displays a progress bar of the download to stderr"""kwargs['width_per_group'] = 64 * 2return _resnet('wide_resnet101_2', Bottleneck, [3, 4, 23, 3],pretrained, progress, **kwargs)

resnet18每一層的輸入輸出的tensor的shape到底是多少呢,輸入是3x224x224的tensor,將輸出的tensor打印如下:

----------------------------------------------------------------Layer (type) Output Shape Param # ================================================================Conv2d-1 [-1, 64, 112, 112] 9,408BatchNorm2d-2 [-1, 64, 112, 112] 128ReLU-3 [-1, 64, 112, 112] 0MaxPool2d-4 [-1, 64, 56, 56] 0Conv2d-5 [-1, 64, 56, 56] 36,864BatchNorm2d-6 [-1, 64, 56, 56] 128ReLU-7 [-1, 64, 56, 56] 0Conv2d-8 [-1, 64, 56, 56] 36,864BatchNorm2d-9 [-1, 64, 56, 56] 128ReLU-10 [-1, 64, 56, 56] 0BasicBlock-11 [-1, 64, 56, 56] 0Conv2d-12 [-1, 64, 56, 56] 36,864BatchNorm2d-13 [-1, 64, 56, 56] 128ReLU-14 [-1, 64, 56, 56] 0Conv2d-15 [-1, 64, 56, 56] 36,864BatchNorm2d-16 [-1, 64, 56, 56] 128ReLU-17 [-1, 64, 56, 56] 0BasicBlock-18 [-1, 64, 56, 56] 0Conv2d-19 [-1, 128, 28, 28] 73,728BatchNorm2d-20 [-1, 128, 28, 28] 256ReLU-21 [-1, 128, 28, 28] 0Conv2d-22 [-1, 128, 28, 28] 147,456BatchNorm2d-23 [-1, 128, 28, 28] 256Conv2d-24 [-1, 128, 28, 28] 8,192BatchNorm2d-25 [-1, 128, 28, 28] 256ReLU-26 [-1, 128, 28, 28] 0BasicBlock-27 [-1, 128, 28, 28] 0Conv2d-28 [-1, 128, 28, 28] 147,456BatchNorm2d-29 [-1, 128, 28, 28] 256ReLU-30 [-1, 128, 28, 28] 0Conv2d-31 [-1, 128, 28, 28] 147,456BatchNorm2d-32 [-1, 128, 28, 28] 256ReLU-33 [-1, 128, 28, 28] 0BasicBlock-34 [-1, 128, 28, 28] 0Conv2d-35 [-1, 256, 14, 14] 294,912BatchNorm2d-36 [-1, 256, 14, 14] 512ReLU-37 [-1, 256, 14, 14] 0Conv2d-38 [-1, 256, 14, 14] 589,824BatchNorm2d-39 [-1, 256, 14, 14] 512Conv2d-40 [-1, 256, 14, 14] 32,768BatchNorm2d-41 [-1, 256, 14, 14] 512ReLU-42 [-1, 256, 14, 14] 0BasicBlock-43 [-1, 256, 14, 14] 0Conv2d-44 [-1, 256, 14, 14] 589,824BatchNorm2d-45 [-1, 256, 14, 14] 512ReLU-46 [-1, 256, 14, 14] 0Conv2d-47 [-1, 256, 14, 14] 589,824BatchNorm2d-48 [-1, 256, 14, 14] 512ReLU-49 [-1, 256, 14, 14] 0BasicBlock-50 [-1, 256, 14, 14] 0Conv2d-51 [-1, 512, 7, 7] 1,179,648BatchNorm2d-52 [-1, 512, 7, 7] 1,024ReLU-53 [-1, 512, 7, 7] 0Conv2d-54 [-1, 512, 7, 7] 2,359,296BatchNorm2d-55 [-1, 512, 7, 7] 1,024Conv2d-56 [-1, 512, 7, 7] 131,072BatchNorm2d-57 [-1, 512, 7, 7] 1,024ReLU-58 [-1, 512, 7, 7] 0BasicBlock-59 [-1, 512, 7, 7] 0Conv2d-60 [-1, 512, 7, 7] 2,359,296BatchNorm2d-61 [-1, 512, 7, 7] 1,024ReLU-62 [-1, 512, 7, 7] 0Conv2d-63 [-1, 512, 7, 7] 2,359,296BatchNorm2d-64 [-1, 512, 7, 7] 1,024ReLU-65 [-1, 512, 7, 7] 0BasicBlock-66 [-1, 512, 7, 7] 0 ================================================================ Total params: 11,176,512 Trainable params: 11,176,512 Non-trainable params: 0 ---------------------------------------------------------------- Input size (MB): 0.57 Forward/backward pass size (MB): 62.78 Params size (MB): 42.64 Estimated Total Size (MB): 105.99 ----------------------------------------------------------------

同樣輸入是3x224x224的tensor,如果是resnet50,那么就會用到bottleneck。那么什么是basicblock,什么是bottleneck呢?

如上圖所示,左圖和右圖分別是basicblock和bottleneck。從兩者的結構圖中可以發現,bottleneck相比起basicblock,在開頭和結尾的地方多了1x1的卷積,1x1的卷積的作用在于變換通道數,通過控制1x1卷積核的數量,可以方便地調整通道數的大小
resnet50輸出的shape為:

----------------------------------------------------------------Layer (type) Output Shape Param # ================================================================Conv2d-1 [-1, 64, 112, 112] 9,408BatchNorm2d-2 [-1, 64, 112, 112] 128ReLU-3 [-1, 64, 112, 112] 0MaxPool2d-4 [-1, 64, 56, 56] 0Conv2d-5 [-1, 64, 56, 56] 4,096BatchNorm2d-6 [-1, 64, 56, 56] 128ReLU-7 [-1, 64, 56, 56] 0Conv2d-8 [-1, 64, 56, 56] 36,864BatchNorm2d-9 [-1, 64, 56, 56] 128ReLU-10 [-1, 64, 56, 56] 0Conv2d-11 [-1, 256, 56, 56] 16,384BatchNorm2d-12 [-1, 256, 56, 56] 512Conv2d-13 [-1, 256, 56, 56] 16,384BatchNorm2d-14 [-1, 256, 56, 56] 512ReLU-15 [-1, 256, 56, 56] 0Bottleneck-16 [-1, 256, 56, 56] 0Conv2d-17 [-1, 64, 56, 56] 16,384BatchNorm2d-18 [-1, 64, 56, 56] 128ReLU-19 [-1, 64, 56, 56] 0Conv2d-20 [-1, 64, 56, 56] 36,864BatchNorm2d-21 [-1, 64, 56, 56] 128ReLU-22 [-1, 64, 56, 56] 0Conv2d-23 [-1, 256, 56, 56] 16,384BatchNorm2d-24 [-1, 256, 56, 56] 512ReLU-25 [-1, 256, 56, 56] 0Bottleneck-26 [-1, 256, 56, 56] 0Conv2d-27 [-1, 64, 56, 56] 16,384BatchNorm2d-28 [-1, 64, 56, 56] 128ReLU-29 [-1, 64, 56, 56] 0Conv2d-30 [-1, 64, 56, 56] 36,864BatchNorm2d-31 [-1, 64, 56, 56] 128ReLU-32 [-1, 64, 56, 56] 0Conv2d-33 [-1, 256, 56, 56] 16,384BatchNorm2d-34 [-1, 256, 56, 56] 512ReLU-35 [-1, 256, 56, 56] 0Bottleneck-36 [-1, 256, 56, 56] 0Conv2d-37 [-1, 128, 56, 56] 32,768BatchNorm2d-38 [-1, 128, 56, 56] 256ReLU-39 [-1, 128, 56, 56] 0Conv2d-40 [-1, 128, 28, 28] 147,456BatchNorm2d-41 [-1, 128, 28, 28] 256ReLU-42 [-1, 128, 28, 28] 0Conv2d-43 [-1, 512, 28, 28] 65,536BatchNorm2d-44 [-1, 512, 28, 28] 1,024Conv2d-45 [-1, 512, 28, 28] 131,072BatchNorm2d-46 [-1, 512, 28, 28] 1,024ReLU-47 [-1, 512, 28, 28] 0Bottleneck-48 [-1, 512, 28, 28] 0Conv2d-49 [-1, 128, 28, 28] 65,536BatchNorm2d-50 [-1, 128, 28, 28] 256ReLU-51 [-1, 128, 28, 28] 0Conv2d-52 [-1, 128, 28, 28] 147,456BatchNorm2d-53 [-1, 128, 28, 28] 256ReLU-54 [-1, 128, 28, 28] 0Conv2d-55 [-1, 512, 28, 28] 65,536BatchNorm2d-56 [-1, 512, 28, 28] 1,024ReLU-57 [-1, 512, 28, 28] 0Bottleneck-58 [-1, 512, 28, 28] 0Conv2d-59 [-1, 128, 28, 28] 65,536BatchNorm2d-60 [-1, 128, 28, 28] 256ReLU-61 [-1, 128, 28, 28] 0Conv2d-62 [-1, 128, 28, 28] 147,456BatchNorm2d-63 [-1, 128, 28, 28] 256ReLU-64 [-1, 128, 28, 28] 0Conv2d-65 [-1, 512, 28, 28] 65,536BatchNorm2d-66 [-1, 512, 28, 28] 1,024ReLU-67 [-1, 512, 28, 28] 0Bottleneck-68 [-1, 512, 28, 28] 0Conv2d-69 [-1, 128, 28, 28] 65,536BatchNorm2d-70 [-1, 128, 28, 28] 256ReLU-71 [-1, 128, 28, 28] 0Conv2d-72 [-1, 128, 28, 28] 147,456BatchNorm2d-73 [-1, 128, 28, 28] 256ReLU-74 [-1, 128, 28, 28] 0Conv2d-75 [-1, 512, 28, 28] 65,536BatchNorm2d-76 [-1, 512, 28, 28] 1,024ReLU-77 [-1, 512, 28, 28] 0Bottleneck-78 [-1, 512, 28, 28] 0Conv2d-79 [-1, 256, 28, 28] 131,072BatchNorm2d-80 [-1, 256, 28, 28] 512ReLU-81 [-1, 256, 28, 28] 0Conv2d-82 [-1, 256, 14, 14] 589,824BatchNorm2d-83 [-1, 256, 14, 14] 512ReLU-84 [-1, 256, 14, 14] 0Conv2d-85 [-1, 1024, 14, 14] 262,144BatchNorm2d-86 [-1, 1024, 14, 14] 2,048Conv2d-87 [-1, 1024, 14, 14] 524,288BatchNorm2d-88 [-1, 1024, 14, 14] 2,048ReLU-89 [-1, 1024, 14, 14] 0Bottleneck-90 [-1, 1024, 14, 14] 0Conv2d-91 [-1, 256, 14, 14] 262,144BatchNorm2d-92 [-1, 256, 14, 14] 512ReLU-93 [-1, 256, 14, 14] 0Conv2d-94 [-1, 256, 14, 14] 589,824BatchNorm2d-95 [-1, 256, 14, 14] 512ReLU-96 [-1, 256, 14, 14] 0Conv2d-97 [-1, 1024, 14, 14] 262,144BatchNorm2d-98 [-1, 1024, 14, 14] 2,048ReLU-99 [-1, 1024, 14, 14] 0Bottleneck-100 [-1, 1024, 14, 14] 0Conv2d-101 [-1, 256, 14, 14] 262,144BatchNorm2d-102 [-1, 256, 14, 14] 512ReLU-103 [-1, 256, 14, 14] 0Conv2d-104 [-1, 256, 14, 14] 589,824BatchNorm2d-105 [-1, 256, 14, 14] 512ReLU-106 [-1, 256, 14, 14] 0Conv2d-107 [-1, 1024, 14, 14] 262,144BatchNorm2d-108 [-1, 1024, 14, 14] 2,048ReLU-109 [-1, 1024, 14, 14] 0Bottleneck-110 [-1, 1024, 14, 14] 0Conv2d-111 [-1, 256, 14, 14] 262,144BatchNorm2d-112 [-1, 256, 14, 14] 512ReLU-113 [-1, 256, 14, 14] 0Conv2d-114 [-1, 256, 14, 14] 589,824BatchNorm2d-115 [-1, 256, 14, 14] 512ReLU-116 [-1, 256, 14, 14] 0Conv2d-117 [-1, 1024, 14, 14] 262,144BatchNorm2d-118 [-1, 1024, 14, 14] 2,048ReLU-119 [-1, 1024, 14, 14] 0Bottleneck-120 [-1, 1024, 14, 14] 0Conv2d-121 [-1, 256, 14, 14] 262,144BatchNorm2d-122 [-1, 256, 14, 14] 512ReLU-123 [-1, 256, 14, 14] 0Conv2d-124 [-1, 256, 14, 14] 589,824BatchNorm2d-125 [-1, 256, 14, 14] 512ReLU-126 [-1, 256, 14, 14] 0Conv2d-127 [-1, 1024, 14, 14] 262,144BatchNorm2d-128 [-1, 1024, 14, 14] 2,048ReLU-129 [-1, 1024, 14, 14] 0Bottleneck-130 [-1, 1024, 14, 14] 0Conv2d-131 [-1, 256, 14, 14] 262,144BatchNorm2d-132 [-1, 256, 14, 14] 512ReLU-133 [-1, 256, 14, 14] 0Conv2d-134 [-1, 256, 14, 14] 589,824BatchNorm2d-135 [-1, 256, 14, 14] 512ReLU-136 [-1, 256, 14, 14] 0Conv2d-137 [-1, 1024, 14, 14] 262,144BatchNorm2d-138 [-1, 1024, 14, 14] 2,048ReLU-139 [-1, 1024, 14, 14] 0Bottleneck-140 [-1, 1024, 14, 14] 0Conv2d-141 [-1, 512, 14, 14] 524,288BatchNorm2d-142 [-1, 512, 14, 14] 1,024ReLU-143 [-1, 512, 14, 14] 0Conv2d-144 [-1, 512, 7, 7] 2,359,296BatchNorm2d-145 [-1, 512, 7, 7] 1,024ReLU-146 [-1, 512, 7, 7] 0Conv2d-147 [-1, 2048, 7, 7] 1,048,576BatchNorm2d-148 [-1, 2048, 7, 7] 4,096Conv2d-149 [-1, 2048, 7, 7] 2,097,152BatchNorm2d-150 [-1, 2048, 7, 7] 4,096ReLU-151 [-1, 2048, 7, 7] 0Bottleneck-152 [-1, 2048, 7, 7] 0Conv2d-153 [-1, 512, 7, 7] 1,048,576BatchNorm2d-154 [-1, 512, 7, 7] 1,024ReLU-155 [-1, 512, 7, 7] 0Conv2d-156 [-1, 512, 7, 7] 2,359,296BatchNorm2d-157 [-1, 512, 7, 7] 1,024ReLU-158 [-1, 512, 7, 7] 0Conv2d-159 [-1, 2048, 7, 7] 1,048,576BatchNorm2d-160 [-1, 2048, 7, 7] 4,096ReLU-161 [-1, 2048, 7, 7] 0Bottleneck-162 [-1, 2048, 7, 7] 0Conv2d-163 [-1, 512, 7, 7] 1,048,576BatchNorm2d-164 [-1, 512, 7, 7] 1,024ReLU-165 [-1, 512, 7, 7] 0Conv2d-166 [-1, 512, 7, 7] 2,359,296BatchNorm2d-167 [-1, 512, 7, 7] 1,024ReLU-168 [-1, 512, 7, 7] 0Conv2d-169 [-1, 2048, 7, 7] 1,048,576BatchNorm2d-170 [-1, 2048, 7, 7] 4,096ReLU-171 [-1, 2048, 7, 7] 0Bottleneck-172 [-1, 2048, 7, 7] 0 ================================================================ Total params: 23,508,032 Trainable params: 23,508,032 Non-trainable params: 0 ---------------------------------------------------------------- Input size (MB): 0.57 Forward/backward pass size (MB): 286.54 Params size (MB): 89.68 Estimated Total Size (MB): 376.79 ----------------------------------------------------------------

總結

以上是生活随笔為你收集整理的Resnet的pytorch官方实现代码解读的全部內容,希望文章能夠幫你解決所遇到的問題。

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

一个色综合网站 | 欧美一级片播放 | 久久免费视频5 | 久久视频这里有久久精品视频11 | 在线中文字幕网站 | 国产真实在线 | 99久热在线精品视频观看 | 97超碰人人澡人人爱学生 | 91丨九色丨国产丨porny精品 | 国产一级片播放 | 精品一二三区 | 亚洲一区二区天堂 | 色综合天天干 | 天天操天天摸天天射 | 美女在线免费视频 | 黄色精品一区 | av7777777| 欧美激情综合五月色丁香小说 | 怡红院av久久久久久久 | 欧美a级一区二区 | 久久视频6 | 精品国产一区二区三区日日嗨 | 成人在线观看免费视频 | 欧美少妇bbwhd | 婷婷在线资源 | 三级黄色在线观看 | 国产成人av网 | 毛片无卡免费无播放器 | 玖玖玖在线 | 国产亚洲精品久久久久久久久久久久 | 精品无人国产偷自产在线 | 18做爰免费视频网站 | 天天操夜夜操国产精品 | 国产亚洲成av人片在线观看桃 | 亚洲国产精品va在线看黑人动漫 | 97人人模人人爽人人少妇 | 狠狠狠色丁香综合久久天下网 | 97精品国产97久久久久久春色 | 97天天干| 国产精品久久久久久69 | 国产人成一区二区三区影院 | 麻豆高清免费国产一区 | 亚洲极色 | 99精品久久99久久久久 | 色婷婷午夜 | 亚洲综合成人在线 | 亚洲在线成人精品 | 午夜国产一区二区三区四区 | 97成人在线视频 | 欧美日韩视频精品 | 久久国产精品免费观看 | 国产精品电影一区二区 | 日韩精品在线视频免费观看 | 九九免费观看全部免费视频 | 午夜电影久久久 | a在线免费 | 天堂视频一区 | 欧美日韩一二三四区 | 国产一二区视频 | 国产在线黄 | 亚洲国产视频在线 | 久久免费视频5 | 黄网站色成年免费观看 | 免费一级日韩欧美性大片 | 久久久久亚洲精品男人的天堂 | 91精品视频播放 | 成人三级网站在线观看 | 亚洲精品乱码久久久久久写真 | 婷婷久操 | 久久精品91视频 | 日韩成人中文字幕 | 国产精品久久久久久电影 | 在线播放日韩av | 日韩在线电影观看 | 免费男女羞羞的视频网站中文字幕 | 日日草av| 99久久夜色精品国产亚洲 | 五月天丁香亚洲 | 免费高清无人区完整版 | 久久人人97超碰com | 免费特级黄毛片 | 欧美动漫一区二区三区 | 国产对白av| 在线激情av电影 | 亚洲天堂网在线观看视频 | 亚洲视频高清 | 国产一区影院 | 91精品老司机久久一区啪 | 96亚洲精品久久久蜜桃 | 日韩av影视在线观看 | 国内少妇自拍视频一区 | 久久久男人的天堂 | 久草在线视频首页 | 国产99久久久国产精品免费看 | 中国成人一区 | 日韩不卡高清视频 | 成人精品久久久 | 97视频在线观看网址 | 国产日韩欧美在线免费观看 | 亚洲国产精品一区二区久久hs | 二区视频在线观看 | 在线看成人 | 免费在线国产黄色 | 一区二区三区在线视频观看58 | 久久开心激情 | 亚州国产精品 | 久久视频这里有精品 | 亚洲欧美视频在线播放 | 日韩av一区二区三区四区 | 91在线操 | 日韩精品第1页 | 欧美日韩伦理在线 | 伊人天天综合 | 欧美精品在线观看免费 | 天天操天天爱天天爽 | 99在线观看 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 最新av网址在线 | 国产精品ssss在线亚洲 | 久久人人爽人人片 | 欧美日韩一区二区三区在线免费观看 | 99精品观看 | 国产精品久久久久久爽爽爽 | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 在线观看国产日韩欧美 | 国产精品女视频 | 高清一区二区三区av | 久久久久免费精品视频 | 九草视频在线观看 | 免费人做人爱www的视 | 五月天激情开心 | 日韩三级免费观看 | 波多野结衣亚洲一区二区 | 国产精品久久久久9999 | 五月婷婷香蕉 | 成年人免费观看国产 | 久精品一区 | av天天干| 日韩在线一区二区免费 | 色婷婷亚洲 | 国产亚洲精品女人久久久久久 | 国产精品ⅴa有声小说 | 91亚洲免费 | 国产精品资源在线 | 国产 在线 日韩 | 在线欧美日韩 | 欧美成人在线免费观看 | 午夜久久久久久久久久影院 | 日韩视频图片 | 五月色丁香 | 欧美污污网站 | 亚洲一级在线观看 | 亚洲国产一二三 | 亚洲va欧洲va国产va不卡 | 成片免费观看视频 | 日韩电影久久 | 99免费看片 | 视频在线一区二区三区 | 999国产| 日本三级在线观看中文字 | 免费看片网站91 | 最新免费中文字幕 | 国产精品99蜜臀久久不卡二区 | 国产护士av | 婷婷激情小说网 | 日本成人中文字幕在线观看 | 免费看搞黄视频网站 | 九九久久国产精品 | 国产亚洲精品无 | 国产一级在线 | 91精品一区二区三区久久久久久 | 久久精品国产精品 | 久射网| 精品91在线 | 在线免费av播放 | 亚洲涩涩网 | 免费黄色a网站 | 亚洲综合网 | 久久久久久国产精品免费 | av资源免费观看 | 色视频在线 | 欧美大片在线看免费观看 | 色婷婷色 | 伊人婷婷网 | 九色视频自拍 | 69av视频在线| 欧美日韩免费看 | 欧美日韩不卡在线视频 | 日韩欧美在线高清 | 日韩欧美在线视频一区二区三区 | 久久五月天色综合 | 亚洲视频 视频在线 | 91丨九色丨蝌蚪丨老版 | 亚洲免费在线播放视频 | 精品国产aⅴ麻豆 | 欧美精彩视频在线观看 | 日本狠狠干| www日韩在线观看 | 亚洲成人影音 | 97影视| 日本精品久久久久 | 国产精品99久久久久久武松影视 | 国产黄在线看 | 中文字幕在线播放日韩 | 亚洲专区免费观看 | 香蕉视频在线免费 | 成人中文字幕在线观看 | 深夜成人av| 精品国产乱码久久久久久1区2匹 | 国产区欧美 | 在线视频精品 | 欧美日韩国产精品一区二区 | 西西4444www大胆艺术 | 97视频在线播放 | www.夜夜干.com | 欧美日韩高清在线一区 | 国产五月色婷婷六月丁香视频 | 成人性生交大片免费看中文网站 | 久久国产美女视频 | 亚洲激情久久 | 韩国一区视频 | www.伊人色.com | 一区二区三区四区五区在线 | 欧美日韩亚洲一 | 三级在线视频播放 | 在线一二三四区 | 欧美小视频在线 | 夜夜操天天干, | 国产精国产精品 | 热99久久精品| 99人久久精品视频最新地址 | 视频在线观看一区 | 少妇超碰在线 | 日韩色在线 | 国产人成看黄久久久久久久久 | 色综合亚洲精品激情狠狠 | 99久久99视频 | 亚洲综合在线五月天 | 久久天天躁夜夜躁狠狠躁2022 | 少妇啪啪av入口 | 最近日韩免费视频 | 精品国内自产拍在线观看视频 | 欧美精品乱码久久久久 | 在线成人国产 | 四虎在线免费视频 | 欧美精品一区二区在线播放 | 天堂黄色片| 伊香蕉大综综综合久久啪 | 国产视频中文字幕在线观看 | 国产天天综合 | 国产一级精品在线观看 | 久久精品国产亚洲a | 91经典在线| 国产精品久久久久久久久久久久午夜片 | 99精品在线免费视频 | 日本久久高清视频 | 国产无套精品久久久久久 | 国产高清视频免费观看 | 在线看不卡av | 欧美日韩中文字幕在线视频 | 美女久久久久 | 免费看污片 | 日本在线观看中文字幕无线观看 | 99热99热 | 精品久久久久久国产 | 亚洲黄色影院 | 欧美日韩首页 | 精品三级av| 97av在线 | 在线观看你懂的网站 | 国产无限资源在线观看 | 国产精品男女啪啪 | 91视频免费网站 | 欧美亚洲成人xxx | 久久久麻豆 | 色多多在线观看 | 日韩 在线 | 欧美 高跟鞋交 xxxxhd | 久久99亚洲热视 | 一级电影免费在线观看 | 中文字幕专区高清在线观看 | 免费激情在线电影 | 国产午夜精品一区二区三区四区 | 狠狠躁夜夜a产精品视频 | 天海冀一区二区三区 | 五月婷婷香蕉 | 天天弄天天操 | 亚洲欧美成人网 | 国产精品黄色影片导航在线观看 | 欧美亚洲国产日韩 | av在线播放观看 | 国产精品视频999 | 国产精品中文久久久久久久 | 日韩精品 在线视频 | 黄色av网站在线观看免费 | 国产视频久久久 | 免费精品视频 | 免费看的黄网站 | 97在线播放视频 | 99久热 | 亚洲狠狠操 | 在线亚洲欧美日韩 | 亚洲精品国产精品99久久 | 在线视频成人 | 韩国av一区二区三区在线观看 | 色综合人人 | 久久在线免费视频 | 97免费视频在线 | 国产黄色一级片在线 | 日韩精品电影在线播放 | 粉嫩aⅴ一区二区三区 | 久久久久久久久久久免费视频 | 日本久久久久久久久久久 | 波多野结衣在线视频一区 | 99视频在线观看一区三区 | 成人av一区二区兰花在线播放 | 免费观看一区二区 | 久久人人爽人人爽人人片 | 欧美成人播放 | 亚洲干视频在线观看 | 日韩精品无 | 黄污网站在线 | 国产精品免费在线播放 | 少妇资源站 | 在线观看亚洲免费视频 | 国产亚洲va综合人人澡精品 | 精品国产成人 | 国产精品视频你懂的 | 天天操天天爽天天干 | 久久精品亚洲国产 | 成人av资源 | 激情丁香| 免费看搞黄视频网站 | 欧美日韩免费观看一区二区三区 | 国产精品乱码高清在线看 | 免费观看性生活大片3 | 99久热在线精品视频观看 | 亚洲精品在线观看的 | 美女网站色免费 | 精品一区二区免费 | 不卡电影免费在线播放一区 | 亚洲国产经典视频 | 狠狠操狠狠干天天操 | 在线 高清 中文字幕 | 久久99热精品这里久久精品 | 亚洲传媒在线 | 国产精品精品 | 日日夜夜天天操 | 看片的网址 | 最近的中文字幕大全免费版 | 五月天国产 | www天天操 | 日韩黄色大片在线观看 | 亚洲精品午夜久久久 | 国产视频中文字幕 | 成年人免费在线观看网站 | 免费福利视频网站 | 97精品国产97久久久久久 | 手机在线小视频 | 免费日韩av电影 | 亚洲精品理论 | 国产亚洲一级高清 | 久久久久久国产一区二区三区 | 99在线精品免费视频九九视 | 中文字幕中文字幕在线一区 | 狠狠88综合久久久久综合网 | 五月天狠狠操 | 91精品国产欧美一区二区 | 国产精品一区欧美 | 日日夜夜天天久久 | 美女网站视频一区 | 在线观看成人网 | 中文字幕 在线看 | 亚洲欧美国产精品久久久久 | 8x成人在线 | 人人干人人模 | 一区二区三区电影在线播 | 国产系列 在线观看 | 又湿又紧又大又爽a视频国产 | 午夜av激情| 亚洲国产精品一区二区久久hs | 欧美日韩亚洲国产一区 | 国产精品区二区三区日本 | 欧美日韩亚洲在线 | 手机成人av | 九九热精品国产 | 精品美女国产在线 | 综合色中文 | 日韩高清观看 | 久久婷婷一区二区三区 | 久久av福利 | 亚洲亚洲精品在线观看 | 超碰国产在线 | 综合久久网站 | 黄色片网站免费 | 国产亚洲精品久久久久久电影 | 成人av电影免费在线观看 | 欧美三级在线播放 | 国产精品成人av久久 | 人人澡人人爽 | 九九久久久久99精品 | 欧美在线视频一区二区 | 亚洲精选在线 | 91在线免费视频观看 | 日韩成人av在线 | 在线观看免费视频你懂的 | 国产91粉嫩白浆在线观看 | 五月婷婷六月丁香 | 久久精品这里都是精品 | 男女拍拍免费视频 | 日韩欧美观看 | 欧美精品久久久久久久久久丰满 | 探花视频在线观看免费 | 成年人在线电影 | 欧美综合在线视频 | 色停停五月天 | 欧美另类交在线观看 | av 一区二区三区四区 | 国产色一区 | 91在线永久| 天天操天天干天天操天天干 | 成人午夜影院 | 高清一区二区三区av | 国产情侣一区 | 丁香五婷 | 午夜精品一区二区三区四区 | 日韩中文字幕免费电影 | 国产韩国精品一区二区三区 | 丁香狠狠 | av久久在线 | 在线成人看片 | 婷婷激情在线 | 中文字幕免费一区 | 欧美日韩视频在线观看一区二区 | 久久国产精品一区二区三区 | 青青草国产成人99久久 | 91视频亚洲| 国产在线观看你懂得 | 精品国产乱码久久久久久三级人 | 国产成人黄色在线 | 四虎永久视频 | 国产精品高清在线 | 黄色aa久久| 国产视频亚洲 | 国产精品视频永久免费播放 | 午夜影院一级片 | 国产福利精品在线观看 | 日韩中文在线视频 | 日韩成人免费在线观看 | 521色香蕉网站在线观看 | 99av国产精品欲麻豆 | 香蕉视频在线播放 | 久久久久国产精品一区二区 | 69久久久 | 日韩理论在线观看 | 婷婷色在线观看 | 国产日韩精品一区二区三区在线 | 成年人免费在线观看网站 | 99色人| 香蕉看片 | 三级黄色a| 婷婷成人亚洲综合国产xv88 | 国产又粗又猛又爽又黄的视频免费 | 日韩剧情 | 亚洲精品xx | 国产高清精 | 97**国产露脸精品国产 | 亚洲综合一区二区精品导航 | 国产最新在线观看 | 久草观看视频 | 久久人人插 | av中文字幕免费在线观看 | 日韩啪视频 | 欧美日韩国产精品一区二区亚洲 | 久久 国产一区 | 精品国产一二三四区 | 九草视频在线观看 | 麻豆94tv免费版 | 亚洲区精品视频 | 日韩中文字幕一区 | 久久一本综合 | 超碰97人 | aaaaaa毛片| 久久精品视频在线观看 | 国产在线视频不卡 | 国产成人黄色av | 中文字幕的| 成人午夜电影在线 | 91在线产啪| 伊人国产在线播放 | 国产成人精品午夜在线播放 | 人人爽人人爽人人片av免 | 日本成人中文字幕在线观看 | 国产日韩精品在线观看 | 天天天天天天干 | 国内精品久久久久影院一蜜桃 | 91精品一区二区三区蜜桃 | 高清不卡免费视频 | 手机看片福利 | 日韩激情小视频 | 五月天狠狠操 | 国产精品麻豆欧美日韩ww | 久久婷婷视频 | 久久手机精品视频 | 91看片看淫黄大片 | 国语自产偷拍精品视频偷 | 国产日韩在线看 | 99精品视频中文字幕 | 国产精品女同一区二区三区久久夜 | 2021av在线| av片在线观看 | 日日干夜夜操视频 | 香蕉成人在线视频 | 麻豆久久久久 | 久久草av| 日本不卡视频 | 伊人国产在线播放 | 天天摸天天操天天爽 | av免费在线观看网站 | 天天干天天操天天干 | 一级做a爱片性色毛片www | 在线观看www视频 | 丁香色婷| 九九热免费精品视频 | 国产成人精品不卡 | 亚洲精品国产综合久久 | 国产最新91| 国产精品永久 | 999久久国精品免费观看网站 | 国产黄色免费观看 | 激情综合网在线观看 | 精品视频中文字幕 | 免费亚洲片 | 日韩欧美精品一区 | 国产精品免费高清 | 婷婷av网站 | 亚洲精品18p| 国产午夜三级一区二区三 | 综合激情网... | 深爱激情五月综合 | 欧美日韩高清不卡 | 美女一区网站 | 精品一区二区免费视频 | 极品国产91在线网站 | 亚洲精品裸体 | 久热av在线 | 亚洲视频99 | 亚洲精品久久久蜜桃直播 | 日韩精品一区二区三区第95 | 午夜私人影院久久久久 | 午夜色婷婷 | 国产青青青 | 久久久久成人精品免费播放动漫 | 91大神在线看 | 伊人永久 | 中文字幕在线观看免费 | 免费久久99精品国产婷婷六月 | 三级av在线免费观看 | 亚洲理论电影 | 特级西西444www高清大视频 | 久久久人 | 国产精品一区二区果冻传媒 | 操操操综合 | 日本韩国中文字幕 | 午夜123| 午夜av一区二区三区 | 日韩电影黄色 | 黄av资源 | 久久噜噜少妇网站 | www激情网 | 成人一区二区在线 | 中文字幕久久精品一区 | 国产精品私拍 | 欧美激情综合五月色丁香小说 | 久草干| 狠狠狠狠狠狠狠干 | 国模吧一区 | 成人91在线观看 | 色瓜| 久久精品aaa| 婷婷久久丁香 | 欧美精品中文在线免费观看 | 亚洲天堂网视频在线观看 | 伊人日日干 | 午夜精品久久久久久 | 中文字幕久久久精品 | 久久中文欧美 | 手机看片久久 | 国产精品久久99 | 午夜黄色| 国产色视频网站 | 欧美日韩中文在线 | 人人草人人草 | 成人免费大片黄在线播放 | 久久国产精品免费观看 | 国内精品免费久久影院 | 草久久久| 国产一二区免费视频 | 国产精品久久久久久吹潮天美传媒 | 久草a视频| 色综合天天综合网国产成人网 | 精品久久久久久久久久久院品网 | 99热这里只有精品国产首页 | 午夜精品一区二区三区视频免费看 | 99精品国产兔费观看久久99 | 免费高清无人区完整版 | 欧美成年人在线观看 | 国产亚洲精品女人久久久久久 | 青青草视频精品 | 国产手机视频在线观看 | 超级碰碰碰视频 | 在线 成人 | 天天干天天草天天爽 | 国产不卡免费视频 | 久久综合九色综合97婷婷女人 | 免费毛片aaaaaa | 99久久精品国产一区二区三区 | 亚洲精品字幕在线观看 | 91精品视频观看 | 国产精品欧美一区二区 | 99精品热视频只有精品10 | 黄色成人av网址 | 成人免费观看电影 | a天堂在线看 | 国色天香永久免费 | 亚洲午夜精品电影 | 精品中文字幕在线播放 | 亚洲伊人av | 91大神电影 | 欧美超碰在线 | 色在线视频 | 亚洲永久在线 | 久久av不卡 | 成人av电影在线播放 | 国产 日韩 欧美 中文 在线播放 | 国产一区久久久 | 亚洲国产欧美在线看片xxoo | 亚洲欧洲精品一区二区精品久久久 | 免费日韩| 麻豆国产精品va在线观看不卡 | 综合激情网| 欧美一级片在线播放 | 色五月激情五月 | 国产精品国产精品 | 国产成人三级在线播放 | 手机看国产毛片 | 免费看黄在线观看 | 看国产黄色片 | 久久久久久久久亚洲精品 | 狠狠干狠狠久久 | 男女啪啪免费网站 | 91视频91蝌蚪| 久久婷婷开心 | 中文字幕日韩一区二区三区不卡 | 中文字幕国内精品 | 欧美乱大交| 亚洲蜜桃av | 美女很黄免费网站 | www色,com| 日日日视频 | 日韩精品免费在线观看 | 国产第一页精品 | 97国产精品视频 | 精品视频久久久 | 久草视频在线观 | 亚洲午夜久久久久久久久 | av永久网址 | 在线视频免费观看 | 欧美日韩高清在线一区 | 中文字幕在线播放一区 | a在线免费观看视频 | 久草干 | 在线不卡a | 成人精品一区二区三区中文字幕 | 久久久福利 | 国产黄在线免费观看 | 日韩亚洲在线观看 | 麻豆国产精品永久免费视频 | 日日夜夜操操 | 99精品视频在线观看 | www.夜夜夜| 国产网站在线免费观看 | 日韩高清免费在线 | 免费看污在线观看 | 草樱av| 在线免费视频你懂的 | 国产一区二区三区高清播放 | 一区二区视频电影在线观看 | 国产视频一| 精品国产aⅴ麻豆 | 中文字幕影片免费在线观看 | 久草视频免费观 | av午夜电影 | 国产一级一级国产 | 成人精品一区二区三区电影免费 | 18性欧美xxxⅹ性满足 | 97精品国产一二三产区 | 91精品国产麻豆国产自产影视 | 66av99精品福利视频在线 | 久久综合久久综合久久综合 | 最近最新中文字幕视频 | 九九热re| 97超碰在线资源 | 国产高清视频在线观看 | 日韩在线观看a | 亚洲干视频在线观看 | 久久国产精品系列 | 国产理论在线 | 久久久久久久久久久精 | www.黄色小说.com| 亚洲国产精品视频在线观看 | 午夜精品一区二区三区可下载 | 色狠狠操 | 亚洲午夜电影网 | 中文字幕在线视频免费播放 | 成人久久精品 | avav99| 日日夜夜免费精品 | 波多野结衣最新 | 国产一级二级三级在线观看 | 韩国av免费在线观看 | 久久久久免费视频 | 99久久婷婷国产精品综合 | 麻豆传媒视频在线 | 欧美日韩精品免费观看视频 | a级国产片 | 97国产人人 | 91麻豆精品国产91久久久无限制版 | 久久久久亚洲精品男人的天堂 | 贫乳av女优大全 | 久久国产热 | 日韩黄视频 | 久久a国产| 国产成年免费视频 | 日韩精品亚洲专区在线观看 | 久久九九国产精品 | 日韩一级理论片 | 午夜手机电影 | 成年人电影毛片 | 不卡的av中文字幕 | 国产成人精品一区二区三区免费 | 免费看一级黄色大全 | www.com久久| 中文字幕久久精品亚洲乱码 | 欧美在线观看视频免费 | 激情婷婷在线 | 国产精品123 | 在线观看网站你懂的 | 成人在线一区二区 | 中文字幕一区二区三区在线视频 | 99视频免费在线观看 | 亚洲国产精品成人精品 | 96精品在线 | 日韩精品首页 | 久久久精品国产免费观看同学 | 手机av在线免费观看 | 国产免费黄视频在线观看 | 久久久久久久久艹 | 午夜在线观看影院 | 久久久免费高清视频 | 亚洲国产午夜 | 五月婷婷黄色网 | 亚洲日日夜夜 | 国产九九九精品视频 | 五月综合 | av成人动漫在线观看 | 五月婷婷精品 | 中文字幕av免费 | 在线观看 国产 | 久久99精品热在线观看 | 中文字幕av日韩 | 日韩在线视频免费观看 | 欧美精品乱码久久久久久 | av观看网站 | 91成版人在线观看入口 | 成人资源在线观看 | 久久婷亚洲五月一区天天躁 | 日韩一二区在线观看 | 欧美日韩高清一区二区三区 | 日韩一片| 最新国产精品久久精品 | 视频三区 | 国产欧美精品在线观看 | 日韩国产高清在线 | 久久福利剧场 | 99视频偷窥在线精品国自产拍 | 2018好看的中文在线观看 | 亚洲黄色片一级 | 婷婷av电影 | 天天干天天拍天天操天天拍 | 狠狠狠干狠狠 | 久久国产精品网站 | 一区二区三区免费在线观看 | 亚洲丝袜一区二区 | 69国产盗摄一区二区三区五区 | 婷婷新五月 | 欧美日韩一区二区在线观看 | 久久一区91| 国产一级二级在线播放 | 美女视频久久久 | 久久免费高清 | 中文字幕在线观看不卡 | 色天天中文 | 中国一区二区视频 | 日韩精品久久久免费观看夜色 | 久久在线免费观看 | 国产麻豆精品在线观看 | 国产丝袜 | 久久久久久久久久久久电影 | 日韩一区视频在线 | www.黄色片网站 | 国产高清免费视频 | 国外av在线| 久久99精品久久久久久三级 | 香蕉日日 | 免费一级日韩欧美性大片 | 亚洲h在线播放在线观看h | 成人午夜免费福利 | 日韩av在线看 | 久久免费激情视频 | 亚洲精品在线视频观看 | 国产成年人av | 91中文字幕网 | www.午夜 | 91久久国产露脸精品国产闺蜜 | 国产免费看 | 99热这里只有精品国产首页 | 日韩欧美高清在线 | 日本少妇久久久 | 亚洲精品免费观看视频 | 狠狠狠综合 | 天天拍天天色 | 中文字幕一区二区三区精华液 | 欧美性视频网站 | 操操操干干干 | 三级黄色免费片 | 国产一级精品在线观看 | 国产精品乱码一区二区视频 | h动漫中文字幕 | 日日草天天草 | 中文不卡视频 | 久久久久久久久久国产精品 | 国产午夜影院 | 麻豆视频在线观看免费 | 日韩精品中文字幕一区二区 | 日韩在线看片 | 天天爽天天搞 | 精品国产自 | 激情久久影院 | 久久精品黄 | 操操综合 | 免费视频在线观看网站 | 丁香六月婷婷开心 | 性日韩欧美在线视频 | 天天操天天操一操 | 久久精品久久精品久久39 | 色资源在线观看 | 免费观看黄色12片一级视频 | 日日碰夜夜爽 | 久久99久| 97香蕉视频 | 国产原创在线 | 欧美专区国产专区 | 狠狠插狠狠干 | 九热在线 | 九九色网| 日韩在线观看精品 | 亚洲丁香日韩 | 日批网站在线观看 | 天天操天天射天天爱 | 日韩午夜精品福利 | 精品亚洲免a | 成人看片 | 九草视频在线 | 国产一级二级在线 | 视频一区二区视频 | 欧美另类美少妇69xxxx | 热久精品 | 久久婷婷国产色一区二区三区 | 久久精品国产99国产 | 日本视频不卡 | 久久综合天天 | 欧美日韩xx| 99在线热播精品免费 | 亚洲一区在线看 | 国产亚洲aⅴaaaaaa毛片 | 岛国av在线不卡 | 曰韩在线 | 国产剧情一区在线 | 天天射射天天 | 久久91久久久久麻豆精品 | 国产精品久久久久久久久久妇女 | 午夜久久久影院 | 毛片888 | 97电影院在线观看 | 成人av午夜 | 国产成人精品一区二区三区 | 午夜三级毛片 | 久久免费毛片 | 国产一区二区不卡视频 | 久久久www成人免费毛片麻豆 | 天天色天天射综合网 | 99在线观看视频网站 | 色婷婷婷 | 狠狠的操狠狠的干 | 欧美一级免费片 | 五月婷婷色丁香 | 美女视频黄网站 | 国产视频午夜 | 日本性久久 | 天天色图 | 久久免费视频精品 | 免费在线观看av网站 | 人人爽久久涩噜噜噜网站 | 超碰在线人| 免费瑟瑟网站 | 日本午夜在线观看 | 日韩av一卡二卡三卡 | 天天做综合网 | 亚洲视频 视频在线 | 久操免费视频 | 狠狠干婷婷色 | 欧美激情h | 国产精品黄色影片导航在线观看 | 日韩高清二区 | 99视频精品免费观看, | 五月天综合色 | 国内精品小视频 | 成人黄色一级视频 | 免费在线黄网 | 一区中文字幕电影 | 亚洲婷婷综合色高清在线 | 操操操av | 欧美精品一区二区三区一线天视频 | 欧美老人xxxx18 | 99精品免费网 | 在线免费高清一区二区三区 | 色网av| 久草网在线| 成人黄色在线播放 | 国产精品久久久久影视 | 狠狠狠狠狠狠狠狠干 | 在线中文字幕播放 | 久久久亚洲网站 | 国产天天爽 | 亚洲黄色av网址 | 丝袜制服综合网 | 午夜三级大片 | 久久精品99国产国产 | 人人插超碰| 在线观看免费国产小视频 | 国产精品免费久久久久久 | 91在线视频在线 | 91自拍视频在线观看 | 99视频国产精品 | 成人黄色小说网 | 欧美天堂视频在线 | 一区二区三区精品在线 | 99热在线国产精品 | 91精品老司机久久一区啪 | 日韩精品一区二区三区三炮视频 | 91中文在线 | 久久国产精品第一页 | 成人国产精品一区二区 | 成年人免费在线观看网站 | 国产在线免费 | 黄色av影视 | 日日日日干 | 久亚洲 | 国产在线中文字幕 | 可以免费看av | 美女国产在线 | 久久久久久久久久久久久久免费看 | 欧美日韩一区二区在线观看 | 亚洲一区尤物 | 久久久久综合视频 | 91视频大全 | 韩国av一区二区 | 韩国一区二区三区在线观看 | 伊人六月 | 在线观看爱爱视频 | 国产精品久久久久久久久免费 | 国产成人精品一区二区三区在线观看 | 免费看的黄色片 | 日韩国产精品一区 | 久久亚洲国产精品 | 国产精品原创av片国产免费 | 色丁香综合 | 91丨九色丨勾搭 | 国产麻豆精品一区 | 亚洲婷婷伊人 | 九色琪琪久久综合网天天 | 国产精品成人免费精品自在线观看 | 国产成人精品一区二三区 | 精品美女久久久久久免费 | 国产a免费 | 日韩,中文字幕 | 国产一级小视频 |