栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Jetson TX2 系列(9)Ubuntu18.04深度学习环境搭建(Anconda和ROS共存)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Jetson TX2 系列(9)Ubuntu18.04深度学习环境搭建(Anconda和ROS共存)

 本文主要完成搭建自己的Ubuntu18.04深度学习环境搭建(Anconda和ROS共存)的搬运工作。

目录
  • 1. 安装Anconda
  • 2. 解决 Anaconda 与 ROS 冲突
    • 2.1 Python 版本冲突
    • 2.2 opencv版本冲突
  • 3. 安装CUDA
  • 4. 安装CuDNN
  • 5. 安装torch
  • 6. 安装Jupyter notebook

1. 安装Anconda
  1. 下载Anconda:清华大学开源软件镜像站

  2. 安装

    bash Anaconda3-2021.05-Linux-x86_64.sh 
    
  3. 更换源

    # conda 镜像
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
    conda config --set show_channel_urls yes
    
    # 配置清华PyPI镜像(如无法运行,将pip版本升级到>=10.0.0)
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    
  4. 创建虚拟环境

    conda create -n torch python=3.6
    

    快速启动torch,不需要conda activate torch

    sudo gedit ~/.bashrc
    alias torch=conda activate torch' 
    
2. 解决 Anaconda 与 ROS 冲突

解决 Anaconda 与 ROS 冲突(python 版本与 opencv)
Anconda和ROS结合使用

2.1 Python 版本冲突
  1. 修改 Anaconda 配置,取消每次进入终端都进入 base 虚拟环境,需要用 anaconda 的时候,再执行 conda activate base进入虚拟环境,参考之前的帖子:https://zhuanlan.zhihu.com/p/88445978

     conda deactivate
     conda activate base 
    conda config --set auto_activate_base false 
     conda config --set auto_activate_base true
    

    ROS所需要的功能包

    # 查看使用的虚拟环境下的 pip,不是的话重开终端
    which pip
    pip install catkin-tools rospkg pyyaml empy numpy
    
  2. 或者每次编译 ros 的时候,退出 anaconda base,保证默认 python 环境为 python2.7

2.2 opencv版本冲突 3. 安装CUDA

【保姆级教程】个人深度学习工作站配置指南
验证NVIDIA驱动安装:nvidia-smi

  1. 下载并安装

    下载cuda-toolkit-archive

    wget https://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.run
    sudo sh cuda_10.1.243_418.87.00_linux.run
    
    wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
    sudo sh cuda_10.2.89_440.33.01_linux.run
    


    vim ~/.bashrc

    export CUDA_HOME=/usr/local/cuda-10.1
    export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
    export PATH=${CUDA_HOME}/bin:${PATH}
    

    source ~/.bashrc

4. 安装CuDNN
  1. 下载

    cuDNN Download

    tar -xzvf cudnn-10.1-linux-x64-v7.6.5.32.tgz 
    

     sudo cp cuda/lib64/* /usr/local/cuda-10.2/lib64/
     sudo cp cuda/include/* /usr/local/cuda-10.2/include/
    
5. 安装torch

Start Locally | PyTorch

#CUDA=10.2
pip install torch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2

简单测试,创建py文件:

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import torch.backends.cudnn as cudnn
from torchvision import datasets, transforms


class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)
        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)
        self.conv2_drop = nn.Dropout2d()
        self.fc1 = nn.Linear(320, 50)
        self.fc2 = nn.Linear(50, 10)


    def forward(self, x):
        x = F.relu(F.max_pool2d(self.conv1(x), 2))
        x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))
        x = x.view(-1, 320)
        x = F.relu(self.fc1(x))
        x = F.dropout(x, training=self.training)
        x = self.fc2(x)
        return F.log_softmax(x, dim=1)


def train(model, device, train_loader, optimizer, epoch):
    model.train()
    for batch_idx, (data, target) in enumerate(train_loader):
        data, target = data.to(device), target.to(device)
        optimizer.zero_grad()
        output = model(data)
        loss = F.nll_loss(output, target)
        loss.backward()
        optimizer.step()
        if batch_idx % 10 == 0:
            print('Train Epoch: {} [{}/{} ({:.0f}%)]tLoss: {:.6f}'.format(
                epoch, batch_idx * len(data), len(train_loader.dataset),
                       100. * batch_idx / len(train_loader), loss.item()))


def main():
    cudnn.benchmark = True
    torch.manual_seed(1)
    device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
    print("Using device: {}".format(device))
    kwargs = {'num_workers': 1, 'pin_memory': True}
    train_loader = torch.utils.data.DataLoader(
        datasets.MNIST('./data', train=True, download=True,
                       transform=transforms.Compose([
                           transforms.ToTensor(),
                           transforms.Normalize((0.1307,), (0.3081,))
                       ])),
        batch_size=64, shuffle=True, **kwargs)

    model = Net().to(device)
    optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)

    for epoch in range(1, 11):
        train(model, device, train_loader, optimizer, epoch)

if __name__ == '__main__':
    main()

6. 安装Jupyter notebook
source activate py3 # 激活py3环境
conda install ipykernel # 安装ipykernel模块
python -m ipykernel install --user --name py3 --display-name "py3" # 进行配置
jupyter notebook # 启动jupyter notebook,然后在"新建"中就会有py3这个kernel了 

安装Nbextensions

conda install -c conda-forge jupyter_contrib_nbextensions
pip install nbconvert==5.6.1 -i https://pypi.mirrors.ustc.edu.cn/simple

快捷键:

alias jupyter='conda activate base && jupyter notebook'
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/293647.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号