1660super搭建深度学习环境


前言

参考博客和视频

b站视频:
我是土堆 up主的教程视频
GPU版本:
https://blog.csdn.net/weixin_38909544/article/details/104807749
https://blog.csdn.net/qq_40710418/article/details/109100802
CPU版本:
https://blog.csdn.net/qq_52178584/article/details/132807684


一、深度学习环境了解

深度学习环境的配置分为两种:CPU版本(无显卡版本)和GPU版本(有显卡版本),本文即介绍的是GPU版本。

可以通过百度搜索,查看电脑是否有显卡的方式。具体的示意图如下所示:
在这里插入图片描述
搭建环境原理和流程如下图所示,图片来源自【我是土堆】up
搭建环境原理
搭建环境的具体流程
Anaconda配置虚拟环境在大多教程中都建议安装Jupyter Notebook,安装的过程中容易报错,出各种bug。目前笔者没有发现不安装有啥后果,可以不安。


二、配置环境的步骤

具体的环境要求参见下载代码的requirement.txt,结合版本兼容问题,做出调整,比如最终下载的tensorflow_gpu版本是1.15.0的。
在这里插入图片描述

1.安装CUDA和CUDNN

在这里插入图片描述
比如笔者的电脑上的驱动型号是12.2.X的,下载的CUDA runtime版本(即CUDA)要小于12.2.X的。结合CSDN1660super成功的经验,最后选取10.0版本的CUDA,以及V7.4版本的CUDNN。

在这里插入图片描述

安装CUDA和CUDNN的具体步骤,可以见下面的链接所示的博客:
https://blog.csdn.net/qq_40710418/article/details/109100802

2.安装anaconda,并利用anaconda prompt配置环境

笔者下载的anaconda版本是3.0的,这个版本的使用人数比较多。

具体的安装步骤可见博客:
https://blog.csdn.net/qq_28053421/article/details/117875784

接下来用到anaconda的命令行窗口Anaconda Prompt,创建python环境。

例如,创建名称为py36的,python3.6的环境

conda create --name py36 python=3.6

创建成功后激活环境,之后安装其他库都在新创建好的环境中进行。

conda activate py36

离开环境:

conda deactivate

遇到安装速度较慢的情况,可以采用镜像下载。可以在安装代码上添加镜像网址(有时候会出现报错的情况)也可以直接将镜像网站添加到下载路径。

pip install easydict==1.7-i https://pypi.tuna.tsinghua.edu.cn/simple

tensorflow的安装
一定要在官网看好,找好和CUDA,CUDNN对应的版本。
在这里插入图片描述
安装好了以后可以在py36中检验:

python
import tensorflow as tf
print(tf.version)

在这里插入图片描述
可以参考博客:
https://blog.csdn.net/ly869915532/article/details/124542362
https://blog.csdn.net/m0_68233404/article/details/128525860

3.安装pycharm,并导入anaconda创建的环境。

一定要看准,导入到新创建的python环境。

具体步骤可以参考博客:

https://blog.csdn.net/qq_28053421/article/details/117875784
http://t.csdnimg.cn/QMZGF

创建一个新的python文件,检验是否能调用gpu.

import tensorflow as tf
import timeit


def cpu_run():
    with tf.device('/cpu:0'):
        cpu_a = tf.random.normal([10000, 1000])
        cpu_b = tf.random.normal([1000, 2000])
        c = tf.matmul(cpu_a, cpu_b)
    return c


def gpu_run():
    with tf.device('/gpu:0'):
        gpu_a = tf.random.normal([10000, 1000])
        gpu_b = tf.random.normal([1000, 2000])
        c = tf.matmul(gpu_a, gpu_b)
    return c


cpu_time = timeit.timeit(cpu_run, number=10)
gpu_time = timeit.timeit(gpu_run, number=10)
print("cpu:", cpu_time, "  gpu:", gpu_time)

运行成功标志:
在这里插入图片描述
至此,可以优雅地使用配置好的环境了。(bushi)

  • 35
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
深度强化学习中的SNN神经网络通常用于建模和解决决策问题。以下是使用 PyTorch 框架搭建深度强化学习 SNN 神经网络的示例代码,供您参考: ```python import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F class SNN(nn.Module): def __init__(self, input_size, output_size): super(SNN, self).__init__() self.input_size = input_size self.output_size = output_size self.hidden_size = 32 self.fc1 = nn.Linear(input_size, self.hidden_size) self.fc2 = nn.Linear(self.hidden_size, self.output_size) def forward(self, x): x = F.relu(self.fc1(x)) x = self.fc2(x) return x class DQN: def __init__(self, input_size, output_size, gamma): self.gamma = gamma self.model = SNN(input_size, output_size) self.optimizer = optim.Adam(self.model.parameters(), lr=0.001) self.criterion = nn.MSELoss() def update(self, state, action, reward, next_state, done): state = torch.tensor(state, dtype=torch.float32) action = torch.tensor(action, dtype=torch.long) reward = torch.tensor(reward, dtype=torch.float32) next_state = torch.tensor(next_state, dtype=torch.float32) q_values = self.model(state) q_value = q_values.gather(1, action.unsqueeze(1)).squeeze(1) next_q_values = self.model(next_state) max_next_q_value = next_q_values.max(1)[0] expected_q_value = reward + self.gamma * max_next_q_value * (1 - done) loss = self.criterion(q_value, expected_q_value.detach()) self.optimizer.zero_grad() loss.backward() self.optimizer.step() def act(self, state, epsilon): if torch.rand(1) < epsilon: return torch.randint(self.model.output_size, (1,)) else: with torch.no_grad(): state = torch.tensor(state, dtype=torch.float32) q_values = self.model(state) return q_values.max(0)[1].view(1, 1) ``` 在上述代码中,我们首先定义了一个 SNN 类,它包含一个全连接层和一个输出层。我们还定义了一个 DQN 类,它包含了一个 SNN 模型、一个优化器和一个损失函数。在 DQN 类中,我们定义了两个方法:update 和 act。update 方法用于更新模型的参数,act 方法用于根据当前状态选择动作。在 update 方法中,我们首先把状态、动作、奖励和下一个状态转换成张量,然后使用 Q-learning 的公式计算目标 Q 值,最后使用均方误差损失函数计算损失,并使用 Adam 优化器更新模型的参数。在 act 方法中,我们使用贪心策略或 ε-greedy 策略选择动作。 需要注意的是,以上代码仅仅是 DQN 算法使用 SNN 神经网络的一个示例,实际应用中可能需要根据具体情况进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值