diff --git a/docs/draft/case-mnist/README.md b/docs/draft/case-mnist/README.md new file mode 100644 index 0000000..a84e779 --- /dev/null +++ b/docs/draft/case-mnist/README.md @@ -0,0 +1,13 @@ +# MNIST Case + +This is an analysis report for MNIST, which contains a PyTorch-based analysis of the MNIST experimental code and process, including analyze the trace-points in it related to data manipulation. + +# What's next + +We will add this into our example case later: + +- [Support mnist case · Issue #85 · hitsz-ids/duetector (github.com)](https://github.com/hitsz-ids/duetector/issues/85) + +# Anouncement + +Thanks to the students from HITSZ for providing us this analysis report! diff --git a/docs/draft/case-mnist/imgs/Analysis.png b/docs/draft/case-mnist/imgs/Analysis.png new file mode 100644 index 0000000..6222758 Binary files /dev/null and b/docs/draft/case-mnist/imgs/Analysis.png differ diff --git a/docs/draft/case-mnist/imgs/DataStream.png b/docs/draft/case-mnist/imgs/DataStream.png new file mode 100644 index 0000000..9aa6ce0 Binary files /dev/null and b/docs/draft/case-mnist/imgs/DataStream.png differ diff --git a/docs/draft/case-mnist/imgs/ProcessionandHooks.png b/docs/draft/case-mnist/imgs/ProcessionandHooks.png new file mode 100644 index 0000000..1ee550d Binary files /dev/null and b/docs/draft/case-mnist/imgs/ProcessionandHooks.png differ diff --git a/docs/draft/case-mnist/imgs/command0.png b/docs/draft/case-mnist/imgs/command0.png new file mode 100644 index 0000000..9e6b778 Binary files /dev/null and b/docs/draft/case-mnist/imgs/command0.png differ diff --git a/docs/draft/case-mnist/imgs/command1.png b/docs/draft/case-mnist/imgs/command1.png new file mode 100644 index 0000000..4f3e5fd Binary files /dev/null and b/docs/draft/case-mnist/imgs/command1.png differ diff --git a/docs/draft/case-mnist/imgs/command2.png b/docs/draft/case-mnist/imgs/command2.png new file mode 100644 index 0000000..6232f8e Binary files /dev/null and b/docs/draft/case-mnist/imgs/command2.png differ diff --git a/docs/draft/case-mnist/report.md b/docs/draft/case-mnist/report.md new file mode 100644 index 0000000..635aa71 --- /dev/null +++ b/docs/draft/case-mnist/report.md @@ -0,0 +1,269 @@ +# 基于机器学习的mnist实验的文件数据流使用监控实验报告 + +## 机器学习的基于mnist数据集的torch实验分析,在实验过程中使用数据、产生中间结果、生成和保存最终模型三个工程中对数据的工作流 + +下面根据实验代码,按照对mnist数据下载、处理,神经网络的定义、训练、保存、加载并验证的流程对数据流进行分析。 + +数据集采用mnist,第一步从网络下载mnist,加载MNIST手写数字数据集,并将训练数据集转换为Tensor格式。测试数据集加载的默认转换为PIL.Image格式 + +下载mnist手写数据集 + +```python + # 下载mnist手写数据集 + train_data = torchvision.datasets.MNIST( + root='./data/', # 保存或提取的位置 会放在当前文件夹中 + train=True, # true说明是用于训练的数据,false说明是用于测试的数据 + transform=torchvision.transforms.ToTensor(), # 转换PIL.Image or numpy.ndarray + download=DOWNLOAD_MNIST, # 已经下载了就不需要下载了 + ) + + test_data = torchvision.datasets.MNIST( + root='./data/', + train=False # 表明是测试集 +) +``` + +这段代码使用了PyTorch中的torchvision.datasets.MNIST类来加载MNIST手写数字数据集对数据进行的处理: +1. `root='./data/'`: 指定了数据集保存或提取的位置,这里设置为'./data/',表示数据集将保存在当前文件夹中。 +2. 用train=?参数将数据分为mnist的训练集和测试集。 +3. `transform=torchvision.transforms.ToTensor()`: 将图像数据转换为Tensor格式。`ToTensor()`是一个变换函数,它将PIL.Image格式或NumPy数组格式的图像转换为Tensor格式。 +4. `download=DOWNLOAD_MNIST`: 判断是否需要下载数据集。 + +接下来对训练集和测试集进行预处理,创建了一个用于训练数据的DataLoader对象,并对测试数据进行了预处理,使其适合模型输入。同时,获取了对应的测试标签。 + +```python +# 批训练 50个samples, 1 channel,28x28 (50,1,28,28) +# Torch中的DataLoader是用来包装数据的工具,它能帮我们有效迭代数据,这样就可以进行批训练 +train_loader = Data.DataLoader( + dataset=train_data, + batch_size=BATCH_SIZE, + shuffle=True # 是否打乱数据,一般都打乱 +) + +# 进行测试 +# 为节约时间,测试时只测试前2000个 +# +test_x = torch.unsqueeze(test_data.train_data, dim=1).type(torch.FloatTensor)[:2000] / 255 +# torch.unsqueeze(a) 是用来对数据维度进行扩充,这样shape就从(2000,28,28)->(2000,1,28,28) +# 图像的pixel本来是0到255之间,除以255对图像进行归一化使取值范围在(0,1) +test_y = test_data.test_labels[:2000] +``` + +这段代码对数据进行了以下处理: +1. `train_loader = Data.DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)`: 创建了一个训练数据的DataLoader对象,用于批量读取数据。其中: + - `dataset=train_data`:指定了数据集,即之前加载的训练数据集`train_data`。 + - `batch_size=BATCH_SIZE`:指定了每个批次的样本数量。 + - `shuffle=True`:对数据进行打乱以增加随机性。 +2. `test_x = torch.unsqueeze(test_data.train_data, dim=1).type(torch.FloatTensor)[:2000] / 255`: + - `torch.unsqueeze(test_data.train_data, dim=1)`: 使用`torch.unsqueeze()`函数将原本的测试数据的维度从(2000, 28, 28)扩展为(2000, 1, 28, 28)。这个操作在维度1上增加了一个维度,用于表示通道数。 + - `.type(torch.FloatTensor)`: 将数据类型转换为`torch.FloatTensor`,即浮点型。 + - `[:2000]`: 截取前2000个样本。 + - `/ 255`: 将像素值从原始的0到255的范围归一化到0到1的范围。 +3. `test_y = test_data.test_labels[:2000]`:这行代码获取了测试数据集中前2000个样本的标签。 + +定义神经网络的结构 + +```python +# 用class类来建立CNN模型 +# CNN流程:卷积(Conv2d)-> 激励函数(ReLU)->池化(MaxPooling)-> +# 卷积(Conv2d)-> 激励函数(ReLU)->池化(MaxPooling)-> +# 展平多维的卷积成的特征图->接入全连接层(Linear)->输出 + +class CNN(nn.Module): # 我们建立的CNN继承nn.Module这个模块 + def __init__(self): + super(CNN, self).__init__() + # 建立第一个卷积(Conv2d)-> 激励函数(ReLU)->池化(MaxPooling) + self.conv1 = nn.Sequential( + # 第一个卷积con2d + nn.Conv2d( # 输入图像大小(1,28,28) + in_channels=1, # 输入图片的高度,因为minist数据集是灰度图像只有一个通道 + out_channels=16, # n_filters 卷积核的高度 + kernel_size=5, # filter size 卷积核的大小 也就是长x宽=5x5 + stride=1, # 步长 + padding=2, # 想要con2d输出的图片长宽不变,就进行补零操作 padding = (kernel_size-1)/2 + ), # 输出图像大小(16,28,28) + # 激活函数 + nn.ReLU(), + # 池化,下采样 + nn.MaxPool2d(kernel_size=2), # 在2x2空间下采样 + # 输出图像大小(16,14,14) + ) + # 建立第二个卷积(Conv2d)-> 激励函数(ReLU)->池化(MaxPooling) + self.conv2 = nn.Sequential( + # 输入图像大小(16,14,14) + nn.Conv2d( # 也可以直接简化写成nn.Conv2d(16,32,5,1,2) + in_channels=16, + out_channels=32, + kernel_size=5, + stride=1, + padding=2 + ), + # 输出图像大小 (32,14,14) + nn.ReLU(), + nn.MaxPool2d(2), + # 输出图像大小(32,7,7) + ) + # 建立全卷积连接层 + self.out = nn.Linear(32 * 7 * 7, 10) # 输出是10个类 + + # 下面定义x的传播路线 + def forward(self, x): + x = self.conv1(x) # x先通过conv1 + x = self.conv2(x) # 再通过conv2 + # 把每一个批次的每一个输入都拉成一个维度,即(batch_size,32*7*7) + # 因为pytorch里特征的形式是[bs,channel,h,w],所以x.size(0)就是batchsize + x = x.view(x.size(0), -1) # view就是把x弄成batchsize行个tensor + output = self.out(x) + return output + + +cnn = CNN() +print(cnn) +``` + +模型训练与保存:使用训练数据对CNN模型进行训练的过程,并打印了训练损失和测试准确率,最后将训练好的模型参数保存到文件中。 + +```python +# 训练 +# 把x和y 都放入Variable中,然后放入cnn中计算output,最后再计算误差 + +# 优化器选择Adam +optimizer = torch.optim.Adam(cnn.parameters(), lr=LR) +# 损失函数 +loss_func = nn.CrossEntropyLoss() # 目标标签是one-hotted + + 开始训练 + for epoch in range(EPOCH): + for step, (b_x, b_y) in enumerate(train_loader): # 分配batch data + output = cnn(b_x) # 先将数据放到cnn中计算output + loss = loss_func(output, b_y) # 输出和真实标签的loss,二者位置不可颠倒 + optimizer.zero_grad() # 清除之前学到的梯度的参数 + loss.backward() # 反向传播,计算梯度 + optimizer.step() # 应用梯度 + + if step % 50 == 0: + test_output = cnn(test_x) + pred_y = torch.max(test_output, 1)[1].data.numpy() + accuracy = float((pred_y == test_y.data.numpy()).astype(int).sum()) / float(test_y.size(0)) + print('Epoch: ', epoch, '| train loss: %.4f' % loss.data.numpy(), '| test accuracy: %.2f' % accuracy) + + torch.save(cnn.state_dict(), 'cnn2.pkl')#保存模型 +``` + +1. `for epoch in range(EPOCH):`: 外层循环控制训练的轮数(epoch)。 +2. `for step, (b_x, b_y) in enumerate(train_loader):`: 内层循环遍历训练数据集。 + - `b_x, b_y`: 表示每个小批次(batch)的输入数据和对应的标签。 +3. `output = cnn(b_x)`: 将输入数据 `b_x` 输入到CNN模型 `cnn` 中进行计算,得到预测输出 `output`。 +4. `loss = loss_func(output, b_y)`: 根据预测输出 `output` 和真实标签 `b_y` 计算损失值 `loss`。 +5. `optimizer.zero_grad()`: 清除之前计算的梯度信息。 +6. `loss.backward()`: 反向传播计算梯度。 +7. `optimizer.step()`: 根据计算得到的梯度更新模型参数。 +8. `if step % 50 == 0:`: 每隔一定步数(50)打印一次训练信息。 + - `test_output = cnn(test_x)`: 在测试集上运行训练好的模型,得到测试输出 `test_output`。 + - `pred_y = torch.max(test_output, 1)[1].data.numpy()`: 根据测试输出找到最大概率对应的类别,将其转为numpy数组。 + - `accuracy = float((pred_y == test_y.data.numpy()).astype(int).sum()) / float(test_y.size(0))`: 计算准确率。 + - 打印当前轮数、训练损失值和测试准确率。 +9. `torch.save(cnn.state_dict(), 'cnn2.pkl')`: 将训练好的模型参数保存到文件中,文件名为 `cnn2.pkl`。 + +加载模型并且将之前输入的测试集数据作为输入,检测输出和测试数据集标签的差异。 + +```python +# 加载模型,调用时需将前面训练及保存模型的代码注释掉,否则会再训练一遍 +cnn.load_state_dict(torch.load('cnn2.pkl')) +cnn.eval() +# print 10 predictions from test data +inputs = test_x[:32] # 测试32个数据 +test_output = cnn(inputs) +pred_y = torch.max(test_output, 1)[1].data.numpy() +print(pred_y, 'prediction number') # 打印识别后的数字 +# print(test_y[:10].numpy(), 'real number') + +img = torchvision.utils.make_grid(inputs) +img = img.numpy().transpose(1, 2, 0) + +# 下面三行为改变图片的亮度 +# std = [0.5, 0.5, 0.5] +# mean = [0.5, 0.5, 0.5] +# img = img * std + mean +cv2.imshow('win', img) # opencv显示需要识别的数据图片 +key_pressed = cv2.waitKey(0) +``` + +## 梳理并输出数据流程图 + +![数据流分析](./imgs/DataStream.png) + +## 实验过程中可能涉及的系统调用和网络调用,eBPF的hook点分析 + +对实验过程的strace部分例子分析: +调研方法:小组在网络上搜索pytorch实验中可能产生的系统调用和ebpf的hook点,以及如何查找并且验证,之后采用了strace工具对pytorch训练过程进行了跟踪调研查找产生的系统调用,利用在特定代码位置插入会产生特定系统调用的函数作为分割点,并阅读pytorch源码来验证具体实验流程中pytorch代码所产生系统调用。由系统调用查找Trace points: +Linux可以通过查看 /sys/kernel/debug/tracing/available_events 文件的内容找到 tracepoint 可监控的事件, +sudo cat /sys/kernel/debug/tracing/available_events |grep ‘系统调用名称‘ +过滤以匹配包含系统调用名称的行 + +对实验过程的strace部分例子分析: + +![部分产生的系统调用](./imgs/Analysis.png) + +这一系列系统调研对应于实验中下载minist训练集的代码 + +```python +# 下载mnist手写数据集 +train_data = torchvision.datasets.MNIST( + root='./data/', # 保存或提取的位置 会放在当前文件夹中 + train=True, # true说明是用于训练的数据,false说明是用于测试的数据 + transform=torchvision.transforms.ToTensor(), # 转换PIL.Image or numpy.ndarray + download=DOWNLOAD_MNIST, # 已经下载了就不需要下载了 +) +``` + +接下来查看pytorch确认mnist类中哪些代码产生了这些调用 +stat("./data/MNIST/processed", 0x7ffc239123c0) = -1 ENOENT (No such file or directory) +对应于Mnist类中对processed文件的检查 + +```python + def _check_legacy_exist(self): + processed_folder_exists = os.path.exists(self.processed_folder) + if not processed_folder_exists: + return False + + return all( + check_integrity(os.path.join(self.processed_folder, file)) for file in (self.training_file, self.test_file) + ) +``` + +stat("./data/MNIST/raw/train-images-idx3-ubyte", {st_mode=S_IFREG|0664, st_size=47040016, ...}) = 0 +对应于Mnist类中对训练数据的加载函数_load_data,到指定的路径下读取图像数据和标签数据 + +```python + def _load_data(self): + image_file = f"{'train' if self.train else 't10k'}-images-idx3-ubyte" + data = read_image_file(os.path.join(self.raw_folder, image_file)) + + label_file = f"{'train' if self.train else 't10k'}-labels-idx1-ubyte" + targets = read_label_file(os.path.join(self.raw_folder, label_file)) + + return data, targets +``` + +openat(AT_FDCWD, "./data/MNIST/raw/train-images-idx3-ubyte", O_RDONLY|O_CLOEXEC) = 4对应于read_sn3_pascalvincent_tensor函数打开目标路径并读取数据 + +```python +def read_sn3_pascalvincent_tensor(path: str, strict: bool = True) -> torch.Tensor: + """Read a SN3 file in "Pascal Vincent" format (Lush file 'libidx/idx-io.lsh'). + Argument may be a filename, compressed filename, or file object. + """ + # read + with open(path, "rb") as f: + data = f.read() +``` + +利用sudo cat /sys/kernel/debug/tracing/available_events |grep ‘系统调用名称命令可以打印系统调用对应的trace_point作为ebpf的hook点。 +![command0](imgs/command0.png) +![command1](imgs/command1.png) +![command2](imgs/command2.png) +更多系统调用分析和对应源码的分析,以及相应的bpf的hook点略,可参见下图。 + +## 梳理并画出实验中Trace points 和 Kprobes 、Kretprobes串连起来的流程图 + +![流程图](imgs/ProcessionandHooks.png) diff --git a/docs/draft/case-mnist/src/mnist.py b/docs/draft/case-mnist/src/mnist.py new file mode 100644 index 0000000..3e81702 --- /dev/null +++ b/docs/draft/case-mnist/src/mnist.py @@ -0,0 +1,142 @@ +# 训练+测试 + + +import os + +import cv2 +import matplotlib.pyplot as plt +import torch +import torch.nn as nn +import torch.utils.data as Data +import torchvision + +torch.manual_seed(1) # 使用随机化种子使神经网络的初始化每次都相同 + +# 超参数 +EPOCH = 1 # 训练整批数据的次数 +BATCH_SIZE = 50 +LR = 0.001 # 学习率 +DOWNLOAD_MNIST = True # 表示还没有下载数据集,如果数据集下载好了就写False + +# 下载mnist手写数据集 +train_data = torchvision.datasets.MNIST( + root="./data/", # 保存或提取的位置 会放在当前文件夹中 + train=True, # true说明是用于训练的数据,false说明是用于测试的数据 + transform=torchvision.transforms.ToTensor(), # 转换PIL.Image or numpy.ndarray + download=DOWNLOAD_MNIST, # 已经下载了就不需要下载了 +) + +test_data = torchvision.datasets.MNIST(root="./data/", train=False) # 表明是测试集 + +# 批训练 50个samples, 1 channel,28x28 (50,1,28,28) +# Torch中的DataLoader是用来包装数据的工具,它能帮我们有效迭代数据,这样就可以进行批训练 +train_loader = Data.DataLoader( + dataset=train_data, batch_size=BATCH_SIZE, shuffle=True # 是否打乱数据,一般都打乱 +) + +# 进行测试 +# 为节约时间,测试时只测试前2000个 +# +test_x = torch.unsqueeze(test_data.train_data, dim=1).type(torch.FloatTensor)[:2000] / 255 +# torch.unsqueeze(a) 是用来对数据维度进行扩充,这样shape就从(2000,28,28)->(2000,1,28,28) +# 图像的pixel本来是0到255之间,除以255对图像进行归一化使取值范围在(0,1) +test_y = test_data.test_labels[:2000] + + +# 用class类来建立CNN模型 +# CNN流程:卷积(Conv2d)-> 激励函数(ReLU)->池化(MaxPooling)-> +# 卷积(Conv2d)-> 激励函数(ReLU)->池化(MaxPooling)-> +# 展平多维的卷积成的特征图->接入全连接层(Linear)->输出 + + +class CNN(nn.Module): # 我们建立的CNN继承nn.Module这个模块 + def __init__(self): + super(CNN, self).__init__() + # 建立第一个卷积(Conv2d)-> 激励函数(ReLU)->池化(MaxPooling) + self.conv1 = nn.Sequential( + # 第一个卷积con2d + nn.Conv2d( # 输入图像大小(1,28,28) + in_channels=1, # 输入图片的高度,因为minist数据集是灰度图像只有一个通道 + out_channels=16, # n_filters 卷积核的高度 + kernel_size=5, # filter size 卷积核的大小 也就是长x宽=5x5 + stride=1, # 步长 + padding=2, # 想要con2d输出的图片长宽不变,就进行补零操作 padding = (kernel_size-1)/2 + ), # 输出图像大小(16,28,28) + # 激活函数 + nn.ReLU(), + # 池化,下采样 + nn.MaxPool2d(kernel_size=2), # 在2x2空间下采样 + # 输出图像大小(16,14,14) + ) + # 建立第二个卷积(Conv2d)-> 激励函数(ReLU)->池化(MaxPooling) + self.conv2 = nn.Sequential( + # 输入图像大小(16,14,14) + nn.Conv2d( # 也可以直接简化写成nn.Conv2d(16,32,5,1,2) + in_channels=16, out_channels=32, kernel_size=5, stride=1, padding=2 + ), + # 输出图像大小 (32,14,14) + nn.ReLU(), + nn.MaxPool2d(2), + # 输出图像大小(32,7,7) + ) + # 建立全卷积连接层 + self.out = nn.Linear(32 * 7 * 7, 10) # 输出是10个类 + + # 下面定义x的传播路线 + def forward(self, x): + x = self.conv1(x) # x先通过conv1 + x = self.conv2(x) # 再通过conv2 + # 把每一个批次的每一个输入都拉成一个维度,即(batch_size,32*7*7) + # 因为pytorch里特征的形式是[bs,channel,h,w],所以x.size(0)就是batchsize + x = x.view(x.size(0), -1) # view就是把x弄成batchsize行个tensor + output = self.out(x) + return output + + +cnn = CNN() +print(cnn) + +# 训练 +# 把x和y 都放入Variable中,然后放入cnn中计算output,最后再计算误差 + +# 优化器选择Adam +optimizer = torch.optim.Adam(cnn.parameters(), lr=LR) +# 损失函数 +loss_func = nn.CrossEntropyLoss() # 目标标签是one-hotted + +# 开始训练 +# for epoch in range(EPOCH): +# for step, (b_x, b_y) in enumerate(train_loader): # 分配batch data +# output = cnn(b_x) # 先将数据放到cnn中计算output +# loss = loss_func(output, b_y) # 输出和真实标签的loss,二者位置不可颠倒 +# optimizer.zero_grad() # 清除之前学到的梯度的参数 +# loss.backward() # 反向传播,计算梯度 +# optimizer.step() # 应用梯度 +# +# if step % 50 == 0: +# test_output = cnn(test_x) +# pred_y = torch.max(test_output, 1)[1].data.numpy() +# accuracy = float((pred_y == test_y.data.numpy()).astype(int).sum()) / float(test_y.size(0)) +# print('Epoch: ', epoch, '| train loss: %.4f' % loss.data.numpy(), '| test accuracy: %.2f' % accuracy) +# +# torch.save(cnn.state_dict(), 'cnn2.pkl')#保存模型 + +# 加载模型,调用时需将前面训练及保存模型的代码注释掉,否则会再训练一遍 +cnn.load_state_dict(torch.load("cnn2.pkl")) +cnn.eval() +# print 10 predictions from test data +inputs = test_x[:32] # 测试32个数据 +test_output = cnn(inputs) +pred_y = torch.max(test_output, 1)[1].data.numpy() +print(pred_y, "prediction number") # 打印识别后的数字 +# print(test_y[:10].numpy(), 'real number') + +img = torchvision.utils.make_grid(inputs) +img = img.numpy().transpose(1, 2, 0) + +# 下面三行为改变图片的亮度 +# std = [0.5, 0.5, 0.5] +# mean = [0.5, 0.5, 0.5] +# img = img * std + mean +cv2.imshow("win", img) # opencv显示需要识别的数据图片 +key_pressed = cv2.waitKey(0) diff --git a/docs/draft/case-mnist/src/result.md b/docs/draft/case-mnist/src/result.md new file mode 100644 index 0000000..db73918 --- /dev/null +++ b/docs/draft/case-mnist/src/result.md @@ -0,0 +1,792 @@ +### 画图 + ++ 每个函数一个大模块 + ++ 体现出大体的逻辑 + + + 每一个小模块解释系统调用的各个参数情况,之后类似的可以直接代过 + + 对于`mmap`,`brk`用于申请内存的情况,或者`futex`等无关数据部分的调用做下简短说明就好 + +--- + +### 输出部分 + +需要注意下面仅仅做了划分,可能有些模块开头部分的参数要到上面去找 + +#### 1. train_data + +> ``` python +> # 下载mnist手写数据集 +> train_data = torchvision.datasets.MNIST( +> root='./data/', # 保存或提取的位置 会放在当前文件夹中 +> train=True, # true说明是用于训练的数据,false说明是用于测试的数据 +> transform=torchvision.transforms.ToTensor(), # 转换PIL.Image or numpy.ndarray +> +> download=DOWNLOAD_MNIST, # 已经下载了就不需要下载了 +> ) +> ``` +> +> ``` +> 11257 stat("./data/MNIST/processed", 0x7ffc239123c0) = -1 ENOENT (No such file or directory) +> 11257 stat("./data/MNIST/raw/train-images-idx3-ubyte", {st_mode=S_IFREG|0664, st_size=47040016, ...}) = 0 +> 11257 stat("./data/MNIST/raw/train-labels-idx1-ubyte", {st_mode=S_IFREG|0664, st_size=60008, ...}) = 0 +> 11257 stat("./data/MNIST/raw/t10k-images-idx3-ubyte", {st_mode=S_IFREG|0664, st_size=7840016, ...}) = 0 +> 11257 stat("./data/MNIST/raw/t10k-labels-idx1-ubyte", {st_mode=S_IFREG|0664, st_size=10008, ...}) = 0 +> 11257 stat("./data/MNIST/raw/train-images-idx3-ubyte", {st_mode=S_IFREG|0664, st_size=47040016, ...}) = 0 +> 11257 stat("./data/MNIST/raw/train-labels-idx1-ubyte", {st_mode=S_IFREG|0664, st_size=60008, ...}) = 0 +> 11257 stat("./data/MNIST/raw/t10k-images-idx3-ubyte", {st_mode=S_IFREG|0664, st_size=7840016, ...}) = 0 +> 11257 stat("./data/MNIST/raw/t10k-labels-idx1-ubyte", {st_mode=S_IFREG|0664, st_size=10008, ...}) = 0 +> 11257 openat(AT_FDCWD, "./data/MNIST/raw/train-images-idx3-ubyte", O_RDONLY|O_CLOEXEC) = 4 +> 11257 fstat(4, {st_mode=S_IFREG|0664, st_size=47040016, ...}) = 0 +> 11257 ioctl(4, TCGETS, 0x7ffc239120c0) = -1 ENOTTY (Inappropriate ioctl for device) +> 11257 lseek(4, 0, SEEK_CUR) = 0 +> 11257 lseek(4, 0, SEEK_CUR) = 0 +> 11257 fstat(4, {st_mode=S_IFREG|0664, st_size=47040016, ...}) = 0 +> 11257 mmap(NULL, 47042560, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa0ed23000 +> 11257 read(4, "\0\0\10\3\0\0\352`\0\0\0\34\0\0\0\34\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 47040017) = 47040016 +> 11257 read(4, "", 1) = 0 +> 11257 close(4) = 0 +> 11257 stat("/home/tsdsnk/Downloads/home/tsdsnk/software/envs/python39/lib/python3.9/encodings", {st_mode=S_IFDIR|0775, st_size=4096, ...}) = 0 +> 11257 stat("/home/tsdsnk/Downloads/home/tsdsnk/software/envs/python39/lib/python3.9/encodings/hex_codec.py", {st_mode=S_IFREG|0664, st_size=1508, ...}) = 0 +> 11257 stat("/home/tsdsnk/Downloads/home/tsdsnk/software/envs/python39/lib/python3.9/encodings/hex_codec.py", {st_mode=S_IFREG|0664, st_size=1508, ...}) = 0 +> 11257 openat(AT_FDCWD, "/home/tsdsnk/Downloads/home/tsdsnk/software/envs/python39/lib/python3.9/encodings/__pycache__/hex_codec.cpython-39.pyc", O_RDONLY|O_CLOEXEC) = 4 +> 11257 fstat(4, {st_mode=S_IFREG|0664, st_size=2350, ...}) = 0 +> 11257 ioctl(4, TCGETS, 0x7ffc23910db0) = -1 ENOTTY (Inappropriate ioctl for device) +> 11257 lseek(4, 0, SEEK_CUR) = 0 +> 11257 lseek(4, 0, SEEK_CUR) = 0 +> 11257 fstat(4, {st_mode=S_IFREG|0664, st_size=2350, ...}) = 0 +> 11257 read(4, "a\r\r\n\0\0\0\0\326=\261_\344\5\0\0\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 2351) = 2350 +> 11257 read(4, "", 1) = 0 +> 11257 close(4) = 0 +> 11257 mmap(NULL, 47042560, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa0c046000 +> 11257 munmap(0x7ffa0ed23000, 47042560) = 0 +> 11257 openat(AT_FDCWD, "./data/MNIST/raw/train-labels-idx1-ubyte", O_RDONLY|O_CLOEXEC) = 4 +> 11257 fstat(4, {st_mode=S_IFREG|0664, st_size=60008, ...}) = 0 +> 11257 ioctl(4, TCGETS, 0x7ffc239120c0) = -1 ENOTTY (Inappropriate ioctl for device) +> 11257 lseek(4, 0, SEEK_CUR) = 0 +> 11257 lseek(4, 0, SEEK_CUR) = 0 +> 11257 fstat(4, {st_mode=S_IFREG|0664, st_size=60008, ...}) = 0 +> 11257 read(4, "\0\0\10\1\0\0\352`\5\0\4\1\t\2\1\3\1\4\3\5\3\6\1\7\2\10\6\t\4\0\t\1"..., 60009) = 60008 +> 11257 read(4, "", 1) = 0 +> 11257 close(4) = 0 +> 11257 brk(0x55809083f000) = 0x55809083f000 +> 11257 brk(0x5580908b4000) = 0x5580908b4000 +> 11257 openat(AT_FDCWD, "/sys/devices/system/cpu/kernel_max", O_RDONLY) = 4 +> 11257 read(4, "8191\n", 32) = 5 +> 11257 read(4, "", 27) = 0 +> 11257 close(4) = 0 +> 11257 openat(AT_FDCWD, "/sys/devices/system/cpu/possible", O_RDONLY) = 4 +> 11257 read(4, "0-127\n", 256) = 6 +> 11257 read(4, "", 250) = 0 +> 11257 close(4) = 0 +> 11257 openat(AT_FDCWD, "/sys/devices/system/cpu/present", O_RDONLY) = 4 +> 11257 read(4, "0-1\n", 256) = 4 +> 11257 read(4, "", 252) = 0 +> 11257 close(4) = 0 +> 11257 openat(AT_FDCWD, "/sys/devices/system/cpu/possible", O_RDONLY) = 4 +> 11257 read(4, "0-127\n", 256) = 6 +> 11257 read(4, "", 250) = 0 +> 11257 close(4) = 0 +> 11257 openat(AT_FDCWD, "/sys/devices/system/cpu/present", O_RDONLY) = 4 +> 11257 read(4, "0-1\n", 256) = 4 +> 11257 read(4, "", 252) = 0 +> 11257 close(4) = 0 +> 11257 openat(AT_FDCWD, "/proc/cpuinfo", O_RDONLY) = 4 +> 11257 read(4, "processor\t: 0\nvendor_id\t: Genuin"..., 2048) = 2048 +> 11257 read(4, "_store_bypass l1tf mds swapgs sr"..., 2001) = 192 +> 11257 read(4, "", 2048) = 0 +> 11257 close(4) = 0 +> 11257 futex(0x7ffa2d4b3568, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 rt_sigaction(SIGRT_1, {sa_handler=0x7ffa35e91870, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7ffa35e42520}, NULL, 8) = 0 +> 11257 rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0 +> 11257 mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7ffa111ff000 +> 11257 mprotect(0x7ffa11200000, 8388608, PROT_READ|PROT_WRITE) = 0 +> 11257 rt_sigprocmask(SIG_BLOCK, ~[], [], 8) = 0 +> 11257 clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7ffa119ff910, parent_tid=0x7ffa119ff910, exit_signal=0, stack=0x7ffa111ff000, stack_size=0x7fff00, tls=0x7ffa119ff640} => {parent_tid=[11293]}, 88) = 11293 +> 11257 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 0, NULL +> 11293 rseq(0x7ffa119fffe0, 0x20, 0, 0x53053053) = 0 +> 11293 set_robust_list(0x7ffa119ff920, 24) = 0 +> 11293 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 +> 11293 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647 +> 11257 <... futex resumed>) = 0 +> 11293 <... futex resumed>) = 1 +> 11257 futex(0x5580907ffdb4, FUTEX_WAIT_PRIVATE, 0, NULL +> 11293 mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7ffa04046000 +> 11293 munmap(0x7ffa04046000, 66822144) = 0 +> 11293 munmap(0x7ffa0c000000, 286720) = 0 +> 11293 mprotect(0x7ffa08000000, 135168, PROT_READ|PROT_WRITE) = 0 +> 11293 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647 +> 11257 <... futex resumed>) = 0 +> 11293 <... futex resumed>) = 1 +> ``` +> + + + +#### 2. test_data + +>``` python +>test_data = torchvision.datasets.MNIST( +> root='./data/', +> train=False # 表明是测试集 +>) +>``` +> +>``` +>11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 4 +>11257 stat("./data/MNIST/processed", 0x7ffc239123c0) = -1 ENOENT (No such file or directory) +>11257 stat("./data/MNIST/raw/train-images-idx3-ubyte", {st_mode=S_IFREG|0664, st_size=47040016, ...}) = 0 +>11257 stat("./data/MNIST/raw/train-labels-idx1-ubyte", {st_mode=S_IFREG|0664, st_size=60008, ...}) = 0 +>11257 stat("./data/MNIST/raw/t10k-images-idx3-ubyte", {st_mode=S_IFREG|0664, st_size=7840016, ...}) = 0 +>11257 stat("./data/MNIST/raw/t10k-labels-idx1-ubyte", {st_mode=S_IFREG|0664, st_size=10008, ...}) = 0 +>11257 openat(AT_FDCWD, "./data/MNIST/raw/t10k-images-idx3-ubyte", O_RDONLY|O_CLOEXEC) = 5 +>11257 fstat(5, {st_mode=S_IFREG|0664, st_size=7840016, ...}) = 0 +>11257 ioctl(5, TCGETS, 0x7ffc239120c0) = -1 ENOTTY (Inappropriate ioctl for device) +>11257 lseek(5, 0, SEEK_CUR) = 0 +>11257 lseek(5, 0, SEEK_CUR) = 0 +>11257 fstat(5, {st_mode=S_IFREG|0664, st_size=7840016, ...}) = 0 +>11257 mmap(NULL, 7843840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10a84000 +>11257 read(5, +>11293 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 8, NULL +>11257 <... read resumed>"\0\0\10\3\0\0'\20\0\0\0\34\0\0\0\34\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 7840017) = 7840016 +>11257 read(5, "", 1) = 0 +>11257 close(5) = 0 +>11257 mmap(NULL, 7843840, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10309000 +>11257 munmap(0x7ffa10a84000, 7843840) = 0 +>11257 openat(AT_FDCWD, "./data/MNIST/raw/t10k-labels-idx1-ubyte", O_RDONLY|O_CLOEXEC) = 5 +>11257 fstat(5, {st_mode=S_IFREG|0664, st_size=10008, ...}) = 0 +>11257 ioctl(5, TCGETS, 0x7ffc239120c0) = -1 ENOTTY (Inappropriate ioctl for device) +>11257 lseek(5, 0, SEEK_CUR) = 0 +>11257 lseek(5, 0, SEEK_CUR) = 0 +>11257 fstat(5, {st_mode=S_IFREG|0664, st_size=10008, ...}) = 0 +>11257 read(5, "\0\0\10\1\0\0'\20\7\2\1\0\4\1\4\t\5\t\0\6\t\0\1\5\t\7\3\4\t\6\6\5"..., 10009) = 10008 +>11257 read(5, "", 1) = 0 +>11257 close(5) = 0 +>``` + + + +#### 3. train_loader + +> ``` python +> train_loader = Data.DataLoader( +> dataset=train_data, +> batch_size=BATCH_SIZE, +> shuffle=True # 是否打乱数据,一般都打乱 +> ) +> ``` +> +> ``` +> 11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 5 +> 11257 getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +> 11257 getpeername(4, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +> 11257 close(4) = 0 +> ``` + + + + + +#### 4. test_x + +>```python +>test_x = torch.unsqueeze(test_data.train_data, dim=1).type(torch.FloatTensor)[:2000] / 255 +> +>``` +> +>``` +>11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 4 +>11257 getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +>11257 getpeername(5, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +>11257 close(5) = 0 +>11257 stat("/home/tsdsnk/Downloads/home/tsdsnk/software/envs/python39/lib/python3.9/site-packages/torchvision/datasets/mnist.py", {st_mode=S_IFREG|0664, st_size=21205, ...}) = 0 +>11257 openat(AT_FDCWD, "/home/tsdsnk/Downloads/home/tsdsnk/software/envs/python39/lib/python3.9/site-packages/torchvision/datasets/mnist.py", O_RDONLY|O_CLOEXEC) = 5 +>11257 fstat(5, {st_mode=S_IFREG|0664, st_size=21205, ...}) = 0 +>11257 ioctl(5, TCGETS, 0x7ffc23911670) = -1 ENOTTY (Inappropriate ioctl for device) +>11257 lseek(5, 0, SEEK_CUR) = 0 +>11257 read(5, "import codecs\nimport os\nimport o"..., 4096) = 4096 +>11257 read(5, " label_file = f\"{'train' if self"..., 8192) = 8192 +>11257 read(5, "_label_file(self.labels_file)\n\n "..., 8192) = 8192 +>11257 read(5, "\n return parsed.view(*s)\n\n\nde"..., 8192) = 725 +>11257 read(5, "", 8192) = 0 +>11257 close(5) = 0 +>11257 write(2, "/home/tsdsnk/Downloads/home/tsds"..., 218) = 218 +>11257 mmap(NULL, 31363072, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa06217000 +>11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +>11293 <... futex resumed>) = 0 +>11293 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647 +>11257 brk(0x558090eaf000) = 0x558090eaf000 +>11257 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 16, NULL +>11293 <... futex resumed>) = 0 +>11293 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +>11257 <... futex resumed>) = 0 +>11257 futex(0x5580907ffdb4, FUTEX_WAIT_PRIVATE, 16, NULL +>11293 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647 +>11257 <... futex resumed>) = -1 EAGAIN (Resource temporarily unavailable) +>11293 <... futex resumed>) = 0 +>11257 munmap(0x7ffa06217000, 31363072 +>11293 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 24, NULL +>11257 <... munmap resumed>) = 0 +>``` + + + + + +#### 5. test_y + +>```python +>test_y = test_data.test_labels[:2000] +>``` +> +> +> +>``` +>11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 5 +>11257 getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +>11257 getpeername(4, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +>11257 close(4) = 0 +>11257 write(2, "/home/tsdsnk/Downloads/home/tsds"..., 226) = 226 +>``` + + + + + +#### 6. cnn + +>``` python +>cnn = CNN() +>``` +> +> +> +>``` +>11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 4 +>11257 getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +>11257 getpeername(5, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +>11257 close(5) = 0 +>11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa12580000 +>``` + + + + + +#### 7. optimizer + +>``` python +>optimizer = torch.optim.Adam(cnn.parameters(), lr=LR) +>``` +> +> +> +>``` +>11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 5 +>11257 getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +>11257 getpeername(4, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +>11257 close(4) = 0 +>``` + + + + + +#### 8. loss_func + +>```python +>loss_func = nn.CrossEntropyLoss() # 目标标签是one-hotted +>``` +> +> +> +>``` +>11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 4 +>11257 getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +>11257 getpeername(5, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +>11257 close(5) = 0 +>``` + + + + + +#### 9. batch_x, batch_y + +>``` python +>for step, (b_x, b_y) in enumerate(train_loader): +>``` +> +> +> +>``` +>11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 5 +>11257 getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +>11257 getpeername(4, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +>11257 close(4) = 0 +>11257 brk(0x558090f40000) = 0x558090f40000 +>11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +>11293 <... futex resumed>) = 0 +>11293 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +>11257 brk(0x558090fb5000) = 0x558090fb5000 +>11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 +>11293 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 32, NULL +>11257 <... mmap resumed>) = 0x7ffa12540000 +>11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa11fc0000 +>11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa11f80000 +>11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa11f40000 +>11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa111bf000 +>11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa1117f000 +>11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa1113f000 +>``` + + + + + +#### 10. output + +> ``` python +> output = cnn(b_x) +> ``` +> +> +> +> ``` +> 11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 4 +> 11257 getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +> 11257 getpeername(5, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +> 11257 close(5) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa110ff000 +> 11257 mprotect(0x7ffa110ff000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 openat(AT_FDCWD, "/home/tsdsnk/Downloads/home/tsdsnk/software/envs/python39/lib/python3.9/site-packages/torch/lib/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/home/tsdsnk/Downloads/home/tsdsnk/software/envs/python39/lib/python3.9/site-packages/torch/lib/../../../../libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/home/tsdsnk/Downloads/home/tsdsnk/software/envs/python39/bin/../lib/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 5 +> 11257 newfstatat(5, "", {st_mode=S_IFREG|0644, st_size=64319, ...}, AT_EMPTY_PATH) = 0 +> 11257 mmap(NULL, 64319, PROT_READ, MAP_PRIVATE, 5, 0) = 0x7ffa156d5000 +> 11257 close(5) = 0 +> 11257 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/haswell", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/tls", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/haswell", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64-linux-gnu", {st_mode=S_IFDIR|0755, st_size=77824, ...}, 0) = 0 +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v3", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/glibc-hwcaps/x86-64-v2", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/haswell", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/tls", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/haswell", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64-linux-gnu", {st_mode=S_IFDIR|0755, st_size=77824, ...}, 0) = 0 +> 11257 openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v3", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/glibc-hwcaps/x86-64-v2", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/tls/haswell/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/tls/haswell/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/tls/haswell/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/tls/haswell", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/tls/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/tls/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/tls/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/tls", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/haswell/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/haswell/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/haswell/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/haswell", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/lib/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 +> 11257 openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v3", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/glibc-hwcaps/x86-64-v2", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/tls/haswell/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/tls/haswell/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/tls/haswell/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/tls/haswell", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/tls/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/tls/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/tls/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/tls", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/haswell/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/haswell/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/haswell/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/haswell", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/x86_64/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib/x86_64", 0x7ffc2390dab0, 0) = -1 ENOENT (No such file or directory) +> 11257 openat(AT_FDCWD, "/usr/lib/libJitPI.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) +> 11257 newfstatat(AT_FDCWD, "/usr/lib", {st_mode=S_IFDIR|0755, st_size=4096, ...}, 0) = 0 +> 11257 munmap(0x7ffa156d5000, 64319) = 0 +> 11257 futex(0x558090ef6fe8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa110bf000 +> 11257 mprotect(0x7ffa110bf000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x5580904661d8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11293 <... futex resumed>) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 brk(0x55809121a000) = 0x55809121a000 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 brk(0x55809147e000) = 0x55809147e000 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa1107f000 +> 11257 mprotect(0x7ffa1107f000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090ed6868, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 brk(0x5580916e3000) = 0x5580916e3000 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa1103f000 +> 11257 mprotect(0x7ffa1103f000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090eac3a8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10fff000 +> 11257 mprotect(0x7ffa10fff000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090eb0e68, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10fbf000 +> 11257 mprotect(0x7ffa10fbf000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090eb06c8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAIT_PRIVATE, 88, NULL +> 11293 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647 +> 11257 <... futex resumed>) = 0 +> 11293 <... futex resumed>) = 1 +> 11257 brk(0x558091815000) = 0x558091815000 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10f7f000 +> 11257 mprotect(0x7ffa10f7f000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x5580903c8b48, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647 +> 11293 mprotect(0x7ffa08021000, 4132864, PROT_READ|PROT_WRITE +> 11257 <... futex resumed>) = 0 +> 11257 brk(0x558091aef000) = 0x558091aef000 +> 11293 <... mprotect resumed>) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> ``` +> +> + + + + + +#### 11. loss + +> ``` python +> loss = loss_func(output, b_y) +> ``` +> +> +> +> ``` +> 11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 5 +> 11257 getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +> 11257 getpeername(4, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +> 11257 close(4) = 0 +> ``` + + + + + +#### 12. zero_grad + +> ``` python +> optimizer.zero_grad() +> ``` +> +> +> +> ``` +> 11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 4 +> 11257 getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +> 11257 getpeername(5, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +> 11257 close(5) = 0 +> ``` + + + + + +#### 13. backward + +> ``` python +> loss.backward() +> ``` +> +> +> +> ``` +> 11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP +> 11293 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 128, NULL +> 11257 <... socket resumed>) = 5 +> 11257 getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +> 11257 getpeername(4, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +> 11257 close(4) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11293 <... futex resumed>) = 0 +> 11293 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11293 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11293 mprotect(0x7ffa08412000, 4624384, PROT_READ|PROT_WRITE) = 0 +> 11293 futex(0x5580907ffdb4, FUTEX_WAIT_PRIVATE, 136, NULL +> 11257 brk(0x558091f58000) = 0x558091f58000 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11293 <... futex resumed>) = 0 +> 11293 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11293 futex(0x5580907ffdb4, FUTEX_WAIT_PRIVATE, 144, NULL +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11293 <... futex resumed>) = 0 +> 11257 brk(0x55809208a000 +> 11293 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 152, NULL +> 11257 <... brk resumed>) = 0x55809208a000 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11293 <... futex resumed>) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 brk(0x5580921bd000) = 0x5580921bd000 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 brk(0x5580922ef000) = 0x5580922ef000 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10f3f000 +> 11257 mprotect(0x7ffa10f3f000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090eccca8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10eff000 +> 11257 mprotect(0x7ffa10eff000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC +> 11293 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 184, NULL +> 11257 <... mprotect resumed>) = 0 +> 11257 futex(0x558090ec2328, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11293 <... futex resumed>) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10ebf000 +> 11257 mprotect(0x7ffa10ebf000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090ec0d08, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10e7f000 +> 11257 mprotect(0x7ffa10e7f000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x5580911d1d88, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAIT_PRIVATE, 200, NULL +> 11293 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 <... futex resumed>) = -1 EAGAIN (Resource temporarily unavailable) +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10e3f000 +> 11257 mprotect(0x7ffa10e3f000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090ebd468, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11293 futex(0x5580907ffdb4, FUTEX_WAIT_PRIVATE, 224, NULL +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11293 <... futex resumed>) = 0 +> 11257 futex(0x55809006fa48, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10dff000 +> 11257 mprotect(0x7ffa10dff000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090ebd868, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 brk(0x558092421000) = 0x558092421000 +> 11257 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 248, NULL +> 11293 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11293 futex(0x5580907ffdb4, FUTEX_WAIT_PRIVATE, 248, NULL +> 11257 <... futex resumed>) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11293 <... futex resumed>) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 brk(0x558092686000) = 0x558092686000 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 brk(0x5580928ea000) = 0x5580928ea000 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10dbf000 +> 11257 mprotect(0x7ffa10dbf000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090eb5a08, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10d7f000 +> 11257 mprotect(0x7ffa10d7f000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090eb8ac8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10d3f000 +> 11257 mprotect(0x7ffa10d3f000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090ed82a8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAIT_PRIVATE, 288, NULL +> 11293 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11257 <... futex resumed>) = 0 +> 11257 futex(0x558090eb7068, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 mmap(NULL, 262144, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ffa10cff000 +> 11257 mprotect(0x7ffa10cff000, 262144, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 +> 11257 futex(0x558090ec68a8, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> ``` + + + + + +#### 14. step + +> ``` python +> optimizer.step() +> ``` +> +> +> +> ``` +> 11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 4 +> 11257 getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +> 11257 getpeername(5, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +> 11257 close(5) = 0 +> 11293 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 312, NULL +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 1 +> 11293 <... futex resumed>) = 0 +> 11293 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580904cd034, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 futex(0x5580907ffdb4, FUTEX_WAKE_PRIVATE, 2147483647) = 0 +> 11257 munmap(0x7ffa111bf000, 262144) = 0 +> 11257 munmap(0x7ffa11f40000, 262144) = 0 +> 11257 munmap(0x7ffa11f80000, 262144) = 0 +> 11257 munmap(0x7ffa11fc0000, 262144) = 0 +> 11257 munmap(0x7ffa12540000, 262144) = 0 +> ``` + + + +#### 15. save + +> ``` python +> torch.save(cnn.state_dict(), 'cnn2.pkl') +> ``` +> +> +> +> ``` +> 11257 socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, IPPROTO_IP) = 5 +> 11257 getsockname(4, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +> 11257 getpeername(4, 0x7ffc23912670, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +> 11257 close(4) = 0 +> 11257 openat(AT_FDCWD, "cnn2.pkl", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 4 +> 11257 writev(4, [{iov_base="PK\3\4\0\0\10\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\r\0\25\0cn"..., iov_len=960}, {iov_base="\372\0\321=&\326\266\275F\350\"\275\2364\276=\214\324A\276\241\230\363=M\240,\275aU\316="..., iov_len=1600}], 2) = 2560 +> 11257 writev(4, [{iov_base="PK\7\10\330\341Z\302@\6\0\0@\6\0\0PK\3\4\0\0\10\10\0\0\0\0\0\0\0\0"..., iov_len=192}, {iov_base="\21\276\36\275\32(6=Z\266\0\275\267\373\227\274J\230$\275TG?=7\233\v 11257 writev(4, [{iov_base="PK\7\10\361\347\22\342\0\310\0\0\0\310\0\0PK\3\4\0\0\10\10\0\0\0\0\0\0\0\0"..., iov_len=256}, {iov_base="\237\3631<\24n\230\274\307\202\247 11257 write(4, "PK\7\01012\302\370\0\365\0\0\0\365\0\0PK\3\4\0\0\10\10\0\0\0\0\0\0\0\0"..., 767 +> ``` + + + + + +#### 16. python函数结束后的部分 + +> ``` +> +> 11293 futex(0x5580904cd034, FUTEX_WAIT_PRIVATE, 328, NULL +> 11257 <... write resumed>) = 767 +> 11257 close(4) = 0 +> 11257 rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7ffa35e42520}, {sa_handler=0x55808a124690, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7ffa35e42520}, 8) = 0 +> 11257 getsockname(5, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("0.0.0.0")}, [16]) = 0 +> 11257 getpeername(5, 0x7ffc23912950, [16]) = -1 ENOTCONN (Transport endpoint is not connected) +> 11257 close(5) = 0 +> 11257 munmap(0x7ffa10309000, 7843840) = 0 +> 11257 munmap(0x7ffa0c046000, 47042560) = 0 +> 11257 munmap(0x7ffa15f70000, 262144) = 0 +> 11257 munmap(0x7ffa15fb0000, 262144) = 0 +> 11257 close(3) = 0 +> 11257 mprotect(0x7ffa10cff000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10cff000, 262144) = 0 +> 11257 mprotect(0x7ffa10d7f000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10d7f000, 262144) = 0 +> 11257 mprotect(0x7ffa10dbf000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10dbf000, 262144) = 0 +> 11257 mprotect(0x7ffa10e3f000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10e3f000, 262144) = 0 +> 11257 mprotect(0x7ffa1107f000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa1107f000, 262144) = 0 +> 11257 mprotect(0x7ffa110bf000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa110bf000, 262144) = 0 +> 11257 mprotect(0x7ffa10dff000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10dff000, 262144) = 0 +> 11257 mprotect(0x7ffa10fff000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10fff000, 262144) = 0 +> 11257 mprotect(0x7ffa110ff000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa110ff000, 262144) = 0 +> 11257 mprotect(0x7ffa10f3f000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10f3f000, 262144) = 0 +> 11257 mprotect(0x7ffa10d3f000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10d3f000, 262144) = 0 +> 11257 mprotect(0x7ffa10eff000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10eff000, 262144) = 0 +> 11257 mprotect(0x7ffa1103f000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa1103f000, 262144) = 0 +> 11257 mprotect(0x7ffa10f7f000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10f7f000, 262144) = 0 +> 11257 mprotect(0x7ffa10fbf000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10fbf000, 262144) = 0 +> 11257 mprotect(0x7ffa10ebf000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10ebf000, 262144) = 0 +> 11257 mprotect(0x7ffa10e7f000, 262144, PROT_READ|PROT_WRITE) = 0 +> 11257 munmap(0x7ffa10e7f000, 262144) = 0 +> 11257 clock_gettime(CLOCK_MONOTONIC, {tv_sec=15014, tv_nsec=428568394}) = 0 +> 11257 munmap(0x7ffa2e5af000, 331776) = 0 +> 11257 munmap(0x7ffa1f83b000, 331776) = 0 +> 11257 getpid() = 11257 +> 11257 exit_group(0) = ? +> 11293 <... futex resumed>) = ? +> 11293 +++ exited with 0 +++ +> 11257 +++ exited with 0 +++ +> ``` +> +>