1 问题
关于if __name__ == '__main__'。
如果tensor有多个值比如X,那么怎么将X转移到CPU呢?
探索提升MNIST数据集的准确率。
2 方法
一.关于if __name__ == '__main__' 的作用
一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import到其他的python脚本中被调用执行。因此 if __name__ == '__main__': 的作用就是控制这两种情况执行代码的过程,在 if __name__ == '__main__': 下的代码只有在文件作为脚本直接执行时才会被执行,而 import 到其他脚本中是不会被执行的。
if ‘__name__’==’__main__’: |
二.如果tensor有多个值比如X,那么怎么将X转移到CPU呢?
1. 对于单个张量X,使用`.to()`方法将其移到CPU上:
X = X.to(‘cpu’) |
list_of_tensors=[tensor1,tensor2,tensor3] # 一个包含多个张量的列表 |
list_of_tensors_on_cpu = [t.to('cpu') for t in list_of_tensors] |
如果你的张量位于GPU上,你还可以使用`.cpu()`方法将其移到CPU:
X = X.cpu() |
三.探索提升MNIST数据集的准确率。
使用深层神经网络
使用深度卷积神经网络(CNNs)可以提高性能。你可以使用PyTorch或TensorFlow等框架构建深层网络,包括多个卷积层和全连接层。import torch
import torch.nn as nn
import torch.optim as optim
# 定义深层卷积神经网络
class DeepCNN(nn.Module):
def __init__(self):
super(DeepCNN, self).__init()
self.conv1 = nn.Conv2d(1, 32, 3)
self.conv2 = nn.Conv2d(32, 64, 3)
self.fc1 = nn.Linear(64 * 5 * 5, 128)
self.fc2 = nn.Linear(128, 10)
def forward(self, x):
# 定义前向传播
# 创建模型、损失函数和优化器
model = DeepCNN()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 训练模型
…数据增强
应用数据增强技术,如旋转、平移、缩放或添加噪声,以扩充训练数据集。这有助于模型更好地学习。
from tensorflow.keras.preprocessing.image import ImageDataGenerator |
3.此外,提高MNIST数据集的准确率还有调整模型架构,尝试不同的网络架构,例如添加更多卷积层、使用更多神经元或调整层的结构。正则化,应用正则化技术,如L2正则化或Dropout,以减小过拟合,这有助于模型更好地泛化到未见过的数据等。
3 结语
本次对实验中出现if __name__ == '__main__'报错的相关问题,知道了该代码只有在py文件作为脚本直接执行时才会被执行,而 import 到其他脚本中是不会被执行的,所以在调用脚本时需要输入调用。对于tensor转移到CPU上运行,对于单个张量可直接进行转移,多个张量可采用循环或列表推导式。关于提升MNIST数据集的准确率涉及到使用更复杂的模型、调整超参数、数据增强等方法。