win11,训练时cpu利用率低,训练效率慢
收藏
用的官网手写数字的demo,训练50轮,但是cpu利用率不高,训练的时候cpu占用还没有项目启动的时候高,有什么办法提高cpu的利用率吗?
不要留言paddle.io.DataLoader,设置num_workers了,这个设置没作用。
环境及依赖:paddlepaddle2.4.2,python3.8
import paddle from paddle.vision.transforms import Normalize # 指定在 CPU 上训练 paddle.device.set_device('cpu') # 指定在 GPU 第 0 号卡上训练 # paddle.device.set_device('gpu:0') transform = Normalize(mean=[127.5], std=[127.5], data_format='CHW') # 加载 MNIST 训练集和测试集 train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=transform) test_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform) # 模型组网,构建并初始化一个模型 mnist mnist = paddle.nn.Sequential( paddle.nn.Flatten(1, -1), paddle.nn.Linear(784, 512), paddle.nn.ReLU(), paddle.nn.Dropout(0.2), paddle.nn.Linear(512, 10) ) # dataset与mnist的定义与使用高层API的内容一致 # 用 DataLoader 实现数据加载 train_loader = paddle.io.DataLoader(train_dataset, batch_size=64, shuffle=True, num_workers=8) # 将mnist模型及其所有子层设置为训练模式。这只会影响某些模块,如Dropout和BatchNorm。 mnist.train() # 设置迭代次数 epochs = 50 # 设置优化器 optim = paddle.optimizer.Adam(parameters=mnist.parameters()) # 设置损失函数 loss_fn = paddle.nn.CrossEntropyLoss() for epoch in range(epochs): for batch_id, data in enumerate(train_loader()): x_data = data[0] # 训练数据 y_data = data[1] # 训练数据标签 predicts = mnist(x_data) # 预测结果 # 计算损失 等价于 prepare 中loss的设置 loss = loss_fn(predicts, y_data) # 计算准确率 等价于 prepare 中metrics的设置 acc = paddle.metric.accuracy(predicts, y_data) # 下面的反向传播、打印训练信息、更新参数、梯度清零都被封装到 Model.fit() 中 # 反向传播 loss.backward() if (batch_id + 1) % 900 == 0: print("epoch: {}, batch_id: {}, loss is: {}, acc is: {}".format(epoch, batch_id + 1, loss.numpy(), acc.numpy())) # 更新参数 optim.step() # 梯度清零 optim.clear_grad()
0
收藏
请登录后评论