在百度飞浆中搭建pytorch环境

1 先检查创建的环境

选择GPU版本

在这里插入图片描述

检查python版本

在这里插入图片描述

2 创建虚拟环境

打开终端,在终端中执行如下指令:
在这里插入图片描述

虚拟环境的创建

python3 -m venv dl # (python3 -m venv 环境名) 这里创建的虚拟环境名称是dl

激活虚拟环境

source dl/bin/activate      # 进入dl环境,安装所需包

在这里插入图片描述

这里注意,同名文件可能会被覆盖掉【主要是它自带的data和work】

我刚开始进来,把他的data给删了,后边自己建了个data来放数据,结果再进去的时候,我自己建的data就被覆盖了,数据就没了,但是你直接把数据放在他的data目录下是没事儿的。
在这里插入图片描述

3 cuad driver和cuda runtime之间的关系

在这里插入图片描述
这里说一下:除了cuda驱动之外,还有一个cuda工具包。

CUDA驱动【在飞浆环境中已经有了】

作用

  • 硬件接口:CUDA驱动程序是操作系统和GPU之间的桥梁,它允许应用程序与显卡进行通信,执行计算任务。
  • 资源管理:驱动程序负责管理和调度GPU资源,包括内存管理、任务调度和设备控制。
  • 兼容性:驱动程序必须与特定的CUDA工具包版本兼容,以确保CUDA代码可以正确运行。

安装步骤

  1. 下载驱动程序

  2. 安装驱动程序

    • Windows
      • 运行下载的安装程序,按照屏幕上的指示
以下是在飞桨平台上使用VGG16实现图像识别的示例代码: ```python import paddle import paddle.fluid as fluid # 定义VGG16网络结构 def vgg16(input): def conv_block(input, num_filter, groups, num_channels=None): return fluid.nets.img_conv_group( input=input, num_filters=num_filter, conv_padding=1, conv_num_filter_groups=groups, conv_num_channels=num_channels, pool_stride=2, pool_padding=0, pool_size=2, pool_type='max') conv1 = conv_block(input, 64, 1) conv2 = conv_block(conv1, 128, 2) conv3 = conv_block(conv2, 256, 4) conv4 = conv_block(conv3, 512, 8) conv5 = conv_block(conv4, 512, 8) fc1 = fluid.layers.fc(input=conv5, size=4096, act='relu') fc2 = fluid.layers.fc(input=fc1, size=4096, act='relu') fc3 = fluid.layers.fc(input=fc2, size=1000, act='softmax') return fc3 # 定义输入层 input_shape = [None, 3, 224, 224] input = fluid.layers.data(name='input', shape=input_shape, dtype='float32') # 定义VGG16网络模型 output = vgg16(input) # 定义损失函数和优化器 label = fluid.layers.data(name='label', shape=[1], dtype='int64') cost = fluid.layers.cross_entropy(input=output, label=label) avg_cost = fluid.layers.mean(cost) optimizer = fluid.optimizer.AdamOptimizer(learning_rate=0.001) optimizer.minimize(avg_cost) # 定义预测程序 test_program = fluid.default_main_program().clone(for_test=True) predict = fluid.layers.argmax(output, axis=1) # 定义训练和测试数据读取器 train_reader = paddle.batch( paddle.reader.shuffle( paddle.dataset.flowers.train(), buf_size=100), batch_size=32) test_reader = paddle.batch( paddle.reader.shuffle( paddle.dataset.flowers.test(), buf_size=100), batch_size=32) # 定义执行器 place = fluid.CUDAPlace(0) exe = fluid.Executor(place) exe.run(fluid.default_startup_program()) # 开始训练 for pass_id in range(10): # 训练 for batch_id, data in enumerate(train_reader()): train_cost, _ = exe.run( program=fluid.default_main_program(), feed={ 'input': fluid.dygraph.to_variable( [x[0] for x in data]), 'label': fluid.dygraph.to_variable( [x[1] for x in data]) }, fetch_list=[avg_cost]) if batch_id % 10 == 0: print("Pass %d, Batch %d, Cost %f" % (pass_id, batch_id, train_cost[0])) # 测试 test_accs = [] test_costs = [] for batch_id, data in enumerate(test_reader()): test_cost, test_acc = exe.run( program=test_program, feed={ 'input': fluid.dygraph.to_variable( [x[0] for x in data]), 'label': fluid.dygraph.to_variable( [x[1] for x in data]) }, fetch_list=[avg_cost, predict]) test_accs.append(test_acc) test_costs.append(test_cost) test_acc = sum(test_accs) / len(test_accs) test_cost = sum(test_costs) / len(test_costs) print("Pass %d, Test Cost %f, Test Acc %f" % (pass_id, test_cost[0], test_acc[0])) ``` 在训练和测试数据读取器中,我们使用了PaddlePaddle自带的鲜花分类数据集。如果需要使用其他数据集进行训练,可以自己编写数据读取器。 在以上代码中,我们使用了fluid.dygraph.to_variable()函数将numpy数组转换为飞桨可识别的张量,使用exe.run()函数执行训练和测试程序。最后,我们输出了每个pass的训练损失和测试准确率。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值