{"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"},"language_info":{"name":"python","version":"3.10.14","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":3649,"databundleVersionId":46718,"sourceType":"competition"}],"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:43:58.397754Z","iopub.execute_input":"2024-11-07T05:43:58.398099Z","iopub.status.idle":"2024-11-07T05:43:59.250037Z","shell.execute_reply.started":"2024-11-07T05:43:58.398064Z","shell.execute_reply":"2024-11-07T05:43:59.249011Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"import collections\nimport math\nimport os\nimport shutil\nimport pandas as pd\nimport torch\nimport torchvision\nfrom torch import nn\n\nroot_path = '/kaggle'","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:43:59.252065Z","iopub.execute_input":"2024-11-07T05:43:59.252575Z","iopub.status.idle":"2024-11-07T05:44:03.370195Z","shell.execute_reply.started":"2024-11-07T05:43:59.252537Z","shell.execute_reply":"2024-11-07T05:44:03.369375Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"!pip install py7zr\nimport py7zr\n\n# 解压训练数据\nwith py7zr.SevenZipFile(os.path.join(root_path, 'input/cifar-10/train.7z'), mode='r') as f:\n    f.extractall(path=os.path.join(root_path, 'temp'))\n\n# 解压测试数据\nwith py7zr.SevenZipFile(os.path.join(root_path, 'input/cifar-10/test.7z'), mode='r') as f:\n    f.extractall(path=os.path.join(root_path, 'temp'))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:44:03.371315Z","iopub.execute_input":"2024-11-07T05:44:03.371759Z","iopub.status.idle":"2024-11-07T05:47:21.742300Z","shell.execute_reply.started":"2024-11-07T05:44:03.371726Z","shell.execute_reply":"2024-11-07T05:47:21.741267Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def read_csv_labels(fname):\n    \"\"\"读取fname来给标签字典返回一个文件名\"\"\"\n    with open(fname, 'r') as f:\n        # 跳过文件头行(列名)\n        lines = f.readlines()[1:]\n    tokens = [l.rstrip().split(',') for l in lines]\n    return dict(((name, label) for name, label in tokens))\n\ndata_dir = os.path.join(root_path, 'temp')\nif not os.path.exists(data_dir):\n    os.makedirs(data_dir)\nshutil.copy('/kaggle/input/cifar-10/trainLabels.csv', '/kaggle/temp/trainLabels.csv')\nlabels = read_csv_labels(os.path.join(data_dir, 'trainLabels.csv'))\nprint('# 训练样本 :', len(labels))\nprint('# 类别 :', len(set(labels.values())))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:47:21.745336Z","iopub.execute_input":"2024-11-07T05:47:21.745747Z","iopub.status.idle":"2024-11-07T05:47:21.825914Z","shell.execute_reply.started":"2024-11-07T05:47:21.745699Z","shell.execute_reply":"2024-11-07T05:47:21.824863Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#@save\ndef copyfile(filename, target_dir):\n    \"\"\"将文件复制到目标目录\"\"\"\n    os.makedirs(target_dir, exist_ok=True)\n    shutil.copy(filename, target_dir)\n\n#@save\ndef reorg_train_valid(data_dir, labels, valid_ratio):\n    \"\"\"将验证集从原始的训练集中拆分出来\"\"\"\n    # 训练数据集中样本最少的类别中的样本数\n    n = collections.Counter(labels.values()).most_common()[-1][1]\n    # 验证集中每个类别的样本数\n    n_valid_per_label = max(1, math.floor(n * valid_ratio))\n    label_count = {}\n    for train_file in os.listdir(os.path.join(data_dir, 'train')):\n        label = labels[train_file.split('.')[0]]\n        fname = os.path.join(data_dir, 'train', train_file)\n        copyfile(fname, os.path.join(data_dir, 'train_valid_test',\n                                     'train_valid', label))\n        if label not in label_count or label_count[label] < n_valid_per_label:\n            copyfile(fname, os.path.join(data_dir, 'train_valid_test',\n                                         'valid', label))\n            label_count[label] = label_count.get(label, 0) + 1\n        else:\n            copyfile(fname, os.path.join(data_dir, 'train_valid_test',\n                                         'train', label))\n    return n_valid_per_label","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:47:21.827098Z","iopub.execute_input":"2024-11-07T05:47:21.827434Z","iopub.status.idle":"2024-11-07T05:47:21.838065Z","shell.execute_reply.started":"2024-11-07T05:47:21.827386Z","shell.execute_reply":"2024-11-07T05:47:21.837186Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"#@save\ndef reorg_test(data_dir):\n    \"\"\"在预测期间整理测试集，以方便读取\"\"\"\n    for test_file in os.listdir(os.path.join(data_dir, 'test')):\n        copyfile(os.path.join(data_dir, 'test', test_file),\n                 os.path.join(data_dir, 'train_valid_test', 'test',\n                              'unknown'))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:47:21.839110Z","iopub.execute_input":"2024-11-07T05:47:21.839373Z","iopub.status.idle":"2024-11-07T05:47:21.849639Z","shell.execute_reply.started":"2024-11-07T05:47:21.839344Z","shell.execute_reply":"2024-11-07T05:47:21.848847Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def reorg_cifar10_data(data_dir, valid_ratio):\n    labels = read_csv_labels(os.path.join(data_dir, 'trainLabels.csv'))\n    reorg_train_valid(data_dir, labels, valid_ratio)\n    reorg_test(data_dir)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:47:21.850999Z","iopub.execute_input":"2024-11-07T05:47:21.851824Z","iopub.status.idle":"2024-11-07T05:47:21.860154Z","shell.execute_reply.started":"2024-11-07T05:47:21.851776Z","shell.execute_reply":"2024-11-07T05:47:21.859319Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"valid_ratio = 0.1\nreorg_cifar10_data(data_dir, valid_ratio)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:47:21.861587Z","iopub.execute_input":"2024-11-07T05:47:21.862048Z","iopub.status.idle":"2024-11-07T05:48:25.176561Z","shell.execute_reply.started":"2024-11-07T05:47:21.862004Z","shell.execute_reply":"2024-11-07T05:48:25.175697Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"transform_train = torchvision.transforms.Compose([\n    # 在高度和宽度上将图像放大到40像素的正方形\n    torchvision.transforms.Resize(40),\n    # 随机裁剪出一个高度和宽度均为40像素的正方形图像，\n    # 生成一个面积为原始图像面积0.64～1倍的小正方形，\n    # 然后将其缩放为高度和宽度均为32像素的正方形\n    torchvision.transforms.RandomResizedCrop(32, scale=(0.64, 1.0),\n                                                   ratio=(1.0, 1.0)),\n    torchvision.transforms.RandomHorizontalFlip(),\n    torchvision.transforms.ToTensor(),\n    # 标准化图像的每个通道\n    torchvision.transforms.Normalize([0.4914, 0.4822, 0.4465],\n                                     [0.2023, 0.1994, 0.2010])])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:25.177785Z","iopub.execute_input":"2024-11-07T05:48:25.178145Z","iopub.status.idle":"2024-11-07T05:48:25.185616Z","shell.execute_reply.started":"2024-11-07T05:48:25.178110Z","shell.execute_reply":"2024-11-07T05:48:25.184481Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"transform_test = torchvision.transforms.Compose([\n    torchvision.transforms.ToTensor(),\n    torchvision.transforms.Normalize([0.4914, 0.4822, 0.4465],\n                                     [0.2023, 0.1994, 0.2010])])","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:25.190067Z","iopub.execute_input":"2024-11-07T05:48:25.190448Z","iopub.status.idle":"2024-11-07T05:48:26.568145Z","shell.execute_reply.started":"2024-11-07T05:48:25.190414Z","shell.execute_reply":"2024-11-07T05:48:26.567131Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_ds, train_valid_ds = [torchvision.datasets.ImageFolder(\n    os.path.join(data_dir, 'train_valid_test', folder),\n    transform=transform_train) for folder in ['train', 'train_valid']]\n\nvalid_ds, test_ds = [torchvision.datasets.ImageFolder(\n    os.path.join(data_dir, 'train_valid_test', folder),\n    transform=transform_test) for folder in ['valid', 'test']]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:26.569663Z","iopub.execute_input":"2024-11-07T05:48:26.570325Z","iopub.status.idle":"2024-11-07T05:48:28.514647Z","shell.execute_reply.started":"2024-11-07T05:48:26.570289Z","shell.execute_reply":"2024-11-07T05:48:28.513062Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# train_ds = torchvision.datasets.CIFAR10(root='./data', train=True, download=True, transform=transform_train)\n# test_ds = torchvision.datasets.CIFAR10(root='./data', train=False, download=True, transform=transform_test)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.516608Z","iopub.execute_input":"2024-11-07T05:48:28.517241Z","iopub.status.idle":"2024-11-07T05:48:28.521448Z","shell.execute_reply.started":"2024-11-07T05:48:28.517199Z","shell.execute_reply":"2024-11-07T05:48:28.520409Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"batch_size = 256\ntrain_iter, train_valid_iter = [torch.utils.data.DataLoader(\n                                dataset, batch_size, shuffle=True, drop_last=True)\n                                for dataset in (train_ds, train_valid_ds)]\nvalid_iter = torch.utils.data.DataLoader(valid_ds, batch_size, shuffle=False,\n                                        drop_last=True)\ntest_iter = torch.utils.data.DataLoader(test_ds, batch_size, shuffle=False,\n                                        drop_last=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.522779Z","iopub.execute_input":"2024-11-07T05:48:28.523223Z","iopub.status.idle":"2024-11-07T05:48:28.532806Z","shell.execute_reply.started":"2024-11-07T05:48:28.523173Z","shell.execute_reply":"2024-11-07T05:48:28.531811Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from torch.nn import functional as F\nclass Residual(nn.Module):\n    \"\"\"两种残差块，一种输入输出大小相同，一种使用1*1卷积改变输出大小\"\"\"\n    def __init__(self, input_channels, num_channels,\n                 use_1x1conv=False, strides=1):\n        super().__init__()\n        self.conv1 = nn.Conv2d(input_channels, num_channels,\n                               kernel_size=3, padding=1, stride=strides)\n        self.conv2 = nn.Conv2d(num_channels, num_channels,\n                               kernel_size=3, padding=1)\n        if use_1x1conv:\n            self.conv3 = nn.Conv2d(input_channels, num_channels,\n                                   kernel_size=1, stride=strides)\n        else:\n            self.conv3 = None\n        self.bn1 = nn.BatchNorm2d(num_channels)\n        self.bn2 = nn.BatchNorm2d(num_channels)\n\n    def forward(self, X):\n        Y = F.relu(self.bn1(self.conv1(X)))\n        Y = self.bn2(self.conv2(Y))\n        if self.conv3:\n            X = self.conv3(X)\n        Y += X\n        return F.relu(Y)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.533988Z","iopub.execute_input":"2024-11-07T05:48:28.534316Z","iopub.status.idle":"2024-11-07T05:48:28.545421Z","shell.execute_reply.started":"2024-11-07T05:48:28.534284Z","shell.execute_reply":"2024-11-07T05:48:28.544559Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"![resnet](https://zh.d2l.ai/_images/functionclasses.svg)\n\n![残差块](https://zh.d2l.ai/_images/residual-block.svg)\n\n![网络结构](https://zh.d2l.ai/_images/resnet18.svg)","metadata":{},"attachments":{"5a3a4db9-92c4-4bc0-9e0f-6a5ee40fda62.png":{"image/png":"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"},"23715aef-ea39-4b25-b51c-ebec9fffa1ec.png":{"image/png":"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"}}},{"cell_type":"code","source":"def resnet_block(in_channels, out_channels, num_residuals,\n                 first_block=False):\n    \"\"\"残差块的再一次封装，resnet模型结构是两个残差块为一组，第一组不改变输出大小\"\"\"\n    blk = []\n    for i in range(num_residuals):\n        if i == 0 and not first_block:\n            blk.append(Residual(in_channels, out_channels,\n                                    use_1x1conv=True, strides=2))\n        else:\n            blk.append(Residual(out_channels, out_channels))\n    return nn.Sequential(*blk)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.546707Z","iopub.execute_input":"2024-11-07T05:48:28.547118Z","iopub.status.idle":"2024-11-07T05:48:28.554075Z","shell.execute_reply.started":"2024-11-07T05:48:28.547074Z","shell.execute_reply":"2024-11-07T05:48:28.553132Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def resnet18(num_classes, in_channels=1):\n    \"\"\"resnet18 网络结构的实现\"\"\"\n    net = nn.Sequential(\n        nn.Conv2d(in_channels, 64, kernel_size=3, stride=1, padding=1),\n        nn.BatchNorm2d(64),\n        nn.ReLU())\n    net.add_module(\"resnet_block1\", resnet_block(64, 64, 2, first_block=True))\n    net.add_module(\"resnet_block2\", resnet_block(64, 128, 2))\n    net.add_module(\"resnet_block3\", resnet_block(128, 256, 2))\n    net.add_module(\"resnet_block4\", resnet_block(256, 512, 2))\n    net.add_module(\"global_avg_pool\", nn.AdaptiveAvgPool2d((1,1)))\n    net.add_module(\"fc\", nn.Sequential(nn.Flatten(),\n                                       nn.Linear(512, num_classes)))\n    return net\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.555311Z","iopub.execute_input":"2024-11-07T05:48:28.555644Z","iopub.status.idle":"2024-11-07T05:48:28.564594Z","shell.execute_reply.started":"2024-11-07T05:48:28.555609Z","shell.execute_reply":"2024-11-07T05:48:28.563757Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def get_net():\n    num_classes = 10\n    net = resnet18(num_classes, 3)\n    return net\n\nloss = nn.CrossEntropyLoss(reduction=\"none\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.565613Z","iopub.execute_input":"2024-11-07T05:48:28.565897Z","iopub.status.idle":"2024-11-07T05:48:28.572874Z","shell.execute_reply.started":"2024-11-07T05:48:28.565865Z","shell.execute_reply":"2024-11-07T05:48:28.571955Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# 可视化\n# %matplotlib inline\nfrom matplotlib_inline import backend_inline\nfrom matplotlib import pyplot as plt\n\ndef use_svg_display(): #@save\n    \"\"\"使用svg格式在Jupyter中显示绘图\"\"\"\n    backend_inline.set_matplotlib_formats('svg')\n\ndef set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend):\n    \"\"\"Set the axes for matplotlib.\"\"\"\n    axes.set_xlabel(xlabel)\n    axes.set_ylabel(ylabel)\n    axes.set_xscale(xscale)\n    axes.set_yscale(yscale)\n    axes.set_xlim(xlim)\n    axes.set_ylim(ylim)\n    if legend:\n        axes.legend(legend)\n    axes.grid()\n\ndef set_figsize(figsize=(3.5, 2.5)): #@save\n    \"\"\"设置matplotlib的图表大小\"\"\"\n    use_svg_display()\n    plt.rcParams['figure.figsize'] = figsize\n\ndef plot(X, Y=None, xlabel=None, ylabel=None, legend=None, xlim=None,\n         ylim=None, xscale='linear', yscale='linear',\n         fmts=('-', 'm--', 'g-.', 'r:'), figsize=(3.5, 2.5), axes=None):\n    \"\"\"Plot data points.\"\"\"\n    if legend is None:\n        legend = []\n\n    set_figsize(figsize)\n    axes = axes if axes else plt.gca()\n\n    # Return True if `X` (tensor or list) has 1 axis\n    def has_one_axis(X):\n        return (hasattr(X, \"ndim\") and X.ndim == 1 or\n                isinstance(X, list) and not hasattr(X[0], \"__len__\"))\n\n    if has_one_axis(X):\n        X = [X]\n    if Y is None:\n        X, Y = [[]] * len(X), X\n    elif has_one_axis(Y):\n        Y = [Y]\n    if len(X) != len(Y):\n        X = X * len(Y)\n    axes.cla()\n    for x, y, fmt in zip(X, Y, fmts):\n        if len(x):\n            axes.plot(x, y, fmt)\n        else:\n            axes.plot(y, fmt)\n    set_axes(axes, xlabel, ylabel, xlim, ylim, xscale, yscale, legend)\n    \nfrom IPython import display    \nclass Accumulator:\n    \"\"\"For accumulating sums over `n` variables.\"\"\"\n    def __init__(self, n):\n        self.data = [0.0] * n\n\n    def add(self, *args):\n        self.data = [a + float(b) for a, b in zip(self.data, args)]\n\n    def reset(self):\n        self.data = [0.0] * len(self.data)\n\n    def __getitem__(self, idx):\n        return self.data[idx]\n    \n    \nclass Animator:\n    \"\"\"For plotting data in animation.\"\"\"\n    def __init__(self, xlabel=None, ylabel=None, legend=None, xlim=None,\n                 ylim=None, xscale='linear', yscale='linear',\n                 fmts=('-', 'm--', 'g-.', 'r:'), nrows=1, ncols=1,\n                 figsize=(3.5, 2.5)):\n        # Incrementally plot multiple lines\n        if legend is None:\n            legend = []\n        use_svg_display()\n        self.fig, self.axes = plt.subplots(nrows, ncols, figsize=figsize)\n        if nrows * ncols == 1:\n            self.axes = [self.axes,]\n        # Use a lambda function to capture arguments\n        self.config_axes = lambda: set_axes(self.axes[\n            0], xlabel, ylabel, xlim, ylim, xscale, yscale, legend)\n        self.X, self.Y, self.fmts = None, None, fmts\n\n    def add(self, x, y):\n        # Add multiple data points into the figure\n        if not hasattr(y, \"__len__\"):\n            y = [y]\n        n = len(y)\n        if not hasattr(x, \"__len__\"):\n            x = [x] * n\n        if not self.X:\n            self.X = [[] for _ in range(n)]\n        if not self.Y:\n            self.Y = [[] for _ in range(n)]\n        for i, (a, b) in enumerate(zip(x, y)):\n            if a is not None and b is not None:\n                self.X[i].append(a)\n                self.Y[i].append(b)\n        self.axes[0].cla()\n        for x, y, fmt in zip(self.X, self.Y, self.fmts):\n            self.axes[0].plot(x, y, fmt)\n        self.config_axes()\n        display.display(self.fig)\n        display.clear_output(wait=True)\n        \nimport time        \nclass Timer: #@save\n    \"\"\"记录多次运行时间\"\"\"\n    def __init__(self):\n        self.times = []\n        self.start()\n    \n    def start(self):\n        \"\"\"启动计时器\"\"\"\n        self.tik = time.time()\n    \n    def stop(self):\n        \"\"\"停止计时器并将时间记录在列表中\"\"\"\n        self.times.append(time.time() - self.tik)\n        return self.times[-1]\n    \n    def avg(self):\n        \"\"\"返回平均时间\"\"\"\n        return sum(self.times) / len(self.times)\n    def sum(self):\n        \"\"\"返回时间总和\"\"\"\n        return sum(self.times)\n    \n    def cumsum(self):\n        \"\"\"返回累计时间\"\"\"\n        return np.array(self.times).cumsum().tolist()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.574174Z","iopub.execute_input":"2024-11-07T05:48:28.574490Z","iopub.status.idle":"2024-11-07T05:48:28.603626Z","shell.execute_reply.started":"2024-11-07T05:48:28.574451Z","shell.execute_reply":"2024-11-07T05:48:28.602778Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# 计算准确率\ndef accuracy(y_hat, y):\n    \"\"\"Compute the number of correct predictions.\"\"\"\n    # 如果y_hat是多维的，并且第二维大于1，使用argmax来获取预测的类别\n    if len(y_hat.shape) > 1 and y_hat.shape[1] > 1:\n        y_hat = torch.argmax(y_hat, dim=1)\n    # 比较预测值和真实值是否相等，并计算相等的个数\n    correct = (y_hat == y).sum().item()\n    return correct\n\ndef evaluate_accuracy_gpu(net, data_iter, device=None):\n    \"\"\"Compute the accuracy for a model on a dataset using a GPU.\"\"\"\n    if isinstance(net, nn.Module):\n        net.eval()  # Set the model to evaluation mode\n        if not device:\n            device = next(iter(net.parameters())).device\n            \n    # No. of correct predictions, no. of predictions\n    metric = Accumulator(2)\n    with torch.no_grad():\n        for X, y in data_iter:\n            if isinstance(X, list):\n                # Required for BERT Fine-tuning (to be covered later)\n                X = [x.to(device) for x in X]\n            else:\n                X = X.to(device)\n            y = y.to(device)\n            metric.add(accuracy(net(X), y), y.numel())\n    return metric[0] / metric[1]\n\n\ndef try_all_gpus():\n    \"\"\"\"获取gpu信息，方便gpu加速\"\"\"\n    devices = [torch.device(f'cuda:{i}')\n             for i in range(torch.cuda.device_count())]\n    return devices if devices else [torch.device('cpu')]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.604819Z","iopub.execute_input":"2024-11-07T05:48:28.605683Z","iopub.status.idle":"2024-11-07T05:48:28.615772Z","shell.execute_reply.started":"2024-11-07T05:48:28.605633Z","shell.execute_reply":"2024-11-07T05:48:28.614593Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def train_batch(net, X, y, loss, trainer, devices):\n    \"\"\" 模型训练\n    数据送到gpu 设置训练模式 梯度清零 前向传播 计算损失 反向传播 参数更新 计算训练损失和准确率`\"\"\"\n    if isinstance(X, list):\n        # Required for BERT fine-tuning (to be covered later)\n        X = [x.to(devices[0]) for x in X]\n    else:\n        X = X.to(devices[0])\n    y = y.to(devices[0])\n    net.train()\n    trainer.zero_grad()\n    pred = net(X)\n    l = loss(pred, y)\n    l.sum().backward()\n    trainer.step()\n    train_loss_sum = l.sum()\n    train_acc_sum = accuracy(pred, y)\n    return train_loss_sum, train_acc_sum","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.617207Z","iopub.execute_input":"2024-11-07T05:48:28.617916Z","iopub.status.idle":"2024-11-07T05:48:28.625133Z","shell.execute_reply.started":"2024-11-07T05:48:28.617870Z","shell.execute_reply":"2024-11-07T05:48:28.624202Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def train(net, train_iter, valid_iter, num_epochs, lr, wd, devices, lr_period,\n          lr_decay):\n    trainer = torch.optim.SGD(net.parameters(), lr=lr, momentum=0.9,\n                              weight_decay=wd)\n    scheduler = torch.optim.lr_scheduler.StepLR(trainer, lr_period, lr_decay)\n    num_batches, timer = len(train_iter), Timer()\n    legend = ['train loss', 'train acc']\n    if valid_iter is not None:\n        legend.append('valid acc')\n    animator = Animator(xlabel='epoch', xlim=[1, num_epochs],\n                            legend=legend)\n    net = nn.DataParallel(net, device_ids=devices).to(devices[0])\n    for epoch in range(num_epochs):\n        net.train()\n        metric = Accumulator(3)\n        for i, (features, labels) in enumerate(train_iter):\n            timer.start()\n            l, acc = train_batch(net, features, labels,\n                                          loss, trainer, devices)\n            metric.add(l, acc, labels.shape[0])\n            timer.stop()\n            if (i + 1) % (num_batches // 5) == 0 or i == num_batches - 1:\n                animator.add(epoch + (i + 1) / num_batches,\n                             (metric[0] / metric[2], metric[1] / metric[2],\n                              None))\n        if valid_iter is not None:\n            valid_acc = evaluate_accuracy_gpu(net, valid_iter)\n            animator.add(epoch + 1, (None, None, valid_acc))\n        scheduler.step()\n    measures = (f'train loss {metric[0] / metric[2]:.3f}, '\n                f'train acc {metric[1] / metric[2]:.3f}')\n    if valid_iter is not None:\n        measures += f', valid acc {valid_acc:.3f}'\n    print(measures + f'\\n{metric[2] * num_epochs / timer.sum():.1f}'\n          f' examples/sec on {str(devices)}')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.626654Z","iopub.execute_input":"2024-11-07T05:48:28.627005Z","iopub.status.idle":"2024-11-07T05:48:28.644889Z","shell.execute_reply.started":"2024-11-07T05:48:28.626943Z","shell.execute_reply":"2024-11-07T05:48:28.643583Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# resnet18  ","metadata":{}},{"cell_type":"code","source":"devices, num_epochs, lr, wd = try_all_gpus(), 20, 2e-4, 5e-4\nprint(\"train on \", devices)\nlr_period, lr_decay, net = 4, 0.9, get_net()\nprint(net)\ntrain(net, train_iter, valid_iter, num_epochs, lr, wd, devices, lr_period,\n      lr_decay)\n# 保存模型\n# torch.save(net.state_dict(), '/kaggle/working/resnet18_cifar10.pth')\npreds = []\nfor X, _ in test_iter:\n    y_hat = net(X.to(devices[0]))\n    preds.extend(y_hat.argmax(dim=1).type(torch.int32).cpu().numpy())\nsorted_ids = list(range(1, len(test_ds) + 1))\nsorted_ids.sort(key=lambda x: str(x))\ndf = pd.DataFrame({'id': sorted_ids, 'label': preds})\ndf['label'] = df['label'].apply(lambda x: train_valid_ds.classes[x])\ndf.to_csv('/kaggle/working/submission_resnet18.csv', index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:49:34.568595Z","iopub.execute_input":"2024-11-07T05:49:34.569229Z","iopub.status.idle":"2024-11-07T05:54:39.609427Z","shell.execute_reply.started":"2024-11-07T05:49:34.569185Z","shell.execute_reply":"2024-11-07T05:54:39.608061Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# resnet34","metadata":{}},{"cell_type":"code","source":"def resnet34(num_classes, in_channels=1):\n    \"\"\"resnet34 网络结构的实现，只是残差块数量上的区别\"\"\"\n    net = nn.Sequential(\n        nn.Conv2d(in_channels, 64, kernel_size=3, stride=1, padding=1),\n        nn.BatchNorm2d(64), \n        nn.ReLU())\n    net.add_module(\"resnet_block1\", resnet_block(64, 64, 3, first_block=True))\n    net.add_module(\"resnet_block2\", resnet_block(64, 128, 4))\n    net.add_module(\"resnet_block3\", resnet_block(128, 256, 6))\n    net.add_module(\"resnet_block4\", resnet_block(256, 512, 3))\n    net.add_module(\"global_avg_pool\", nn.AdaptiveAvgPool2d((1, 1)))\n    net.add_module(\"fc\", nn.Sequential(nn.Flatten(), \n                                       nn.Linear(512, num_classes)))\n    return net\n\ndef get_net34():\n    num_classes = 10\n    net = resnet34(num_classes, 3)\n    return net\n\nloss = nn.CrossEntropyLoss(reduction=\"none\")\ndevices, num_epochs, lr, wd = try_all_gpus(), 50, 2e-4, 5e-4\nprint(\"train on \", devices)\nlr_period, lr_decay, net = 4, 0.9, get_net34()\nprint(net)\ntrain(net, train_iter, valid_iter, num_epochs, lr, wd, devices, lr_period,\n      lr_decay)\n# 保存模型\ntorch.save(net.state_dict(), '/kaggle/working/resnet34_cifar10.pth')\n\npreds = []\nfor X, _ in test_iter:\n    y_hat = net(X.to(devices[0]))\n    preds.extend(y_hat.argmax(dim=1).type(torch.int32).cpu().numpy())\nsorted_ids = list(range(1, len(test_ds) + 1))\nsorted_ids.sort(key=lambda x: str(x))\ndf = pd.DataFrame({'id': sorted_ids, 'label': preds})\ndf['label'] = df['label'].apply(lambda x: train_valid_ds.classes[x])\ndf.to_csv('/kaggle/working/submission_resnet34.csv', index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:28.730270Z","iopub.execute_input":"2024-11-07T05:48:28.730648Z","iopub.status.idle":"2024-11-07T05:48:29.145520Z","shell.execute_reply.started":"2024-11-07T05:48:28.730596Z","shell.execute_reply":"2024-11-07T05:48:29.144476Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"# resnet34 + adamw","metadata":{}},{"cell_type":"code","source":"# 修改优化器为adamw\ndef train(net, train_iter, valid_iter, num_epochs, lr, wd, devices, lr_period,\n          lr_decay):\n    trainer = torch.optim.AdamW(net.parameters(), lr=lr, weight_decay=wd)\n    scheduler = torch.optim.lr_scheduler.StepLR(trainer, lr_period, lr_decay)\n    num_batches, timer = len(train_iter), Timer()\n    legend = ['train loss', 'train acc']\n    if valid_iter is not None:\n        legend.append('valid acc')\n    animator = Animator(xlabel='epoch', xlim=[1, num_epochs],\n                            legend=legend)\n    net = nn.DataParallel(net, device_ids=devices).to(devices[0])\n    for epoch in range(num_epochs):\n        net.train()\n        metric = Accumulator(3)\n        for i, (features, labels) in enumerate(train_iter):\n            timer.start()\n            l, acc = train_batch(net, features, labels,\n                                          loss, trainer, devices)\n            metric.add(l, acc, labels.shape[0])\n            timer.stop()\n            if (i + 1) % (num_batches // 5) == 0 or i == num_batches - 1:\n                animator.add(epoch + (i + 1) / num_batches,\n                             (metric[0] / metric[2], metric[1] / metric[2],\n                              None))\n        if valid_iter is not None:\n            valid_acc = evaluate_accuracy_gpu(net, valid_iter)\n            animator.add(epoch + 1, (None, None, valid_acc))\n        scheduler.step()\n    measures = (f'train loss {metric[0] / metric[2]:.3f}, '\n                f'train acc {metric[1] / metric[2]:.3f}')\n    if valid_iter is not None:\n        measures += f', valid acc {valid_acc:.3f}'\n    print(measures + f'\\n{metric[2] * num_epochs / timer.sum():.1f}'\n          f' examples/sec on {str(devices)}')\n\ndevices, num_epochs, lr, wd = try_all_gpus(), 50, 4e-4, 8e-4\nprint(\"train on \", devices)\nlr_period, lr_decay, net = 4, 0.9, get_net34()\nprint(net)\ntrain(net, train_valid_iter, None, num_epochs, lr, wd, devices, lr_period,\n      lr_decay)\n\npreds = []\nfor X, _ in test_iter:\n    y_hat = net(X.to(devices[0]))\n    preds.extend(y_hat.argmax(dim=1).type(torch.int32).cpu().numpy())\nsorted_ids = list(range(1, len(test_ds) + 1))\nsorted_ids.sort(key=lambda x: str(x))\ndf = pd.DataFrame({'id': sorted_ids, 'label': preds})\ndf['label'] = df['label'].apply(lambda x: train_valid_ds.classes[x])\ndf.to_csv('/kaggle/working/submission_resnet34_adamw.csv', index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-07T05:48:29.147276Z","iopub.execute_input":"2024-11-07T05:48:29.147683Z","iopub.status.idle":"2024-11-07T05:49:12.867923Z","shell.execute_reply.started":"2024-11-07T05:48:29.147640Z","shell.execute_reply":"2024-11-07T05:49:12.865243Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}