Jammy@Jetson Orin - Tensorflow & Keras Get Started: 000 setup for tutorial

本文详细介绍了在JetsonOrin上安装和配置Tensorflow、Keras、JAX等深度学习框架的步骤,以及遇到的numpy版本兼容、API编译和预测问题的解决方案。通过实际操作演示,强调了逐步学习和解决问题的重要性。
部署运行你感兴趣的模型镜像

1. 源由

凡事开头难!入门搭建环境难!

这里就从最基本的环境搭建和大家共一起勉!

2. 搭建环境

2.1 安装IDE环境

  • jupyterlab环境
$ pip install jupyterlab
$ jupyter lab
  • jupyternotebook环境
$ pip install notebook
$ jupyter notebook

注:推荐使用jupyterlab。

2.2 安装numpy

$ pip install -U numpy  //升级到最新版本

$ python
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy.__version__
'1.26.4'
>>>

注:升级到指定版本可以使用命令pip install numpy==1.24.3

2.3 安装keras

$ pip install --upgrade keras

$ python
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import keras
>>> keras.__version__
'3.3.2'
>>>

参考:Keras Get Started

2.4 安装JAX

  • CPU-only (Linux/macOS/Windows)
$ pip install -U "jax[cpu]"
  • GPU (NVIDIA, CUDA 12, x86_64)
$ pip install -U "jax[cuda12_pip]" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html

注:更多关于JAX的硬件版本信息,详见:Installing JAX

2.5 安装tensorflow

$ pip install tensorflow

$ python
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.__version__
'2.16.1'
>>> tf.__path__
['/home/daniel/.local/lib/python3.10/site-packages/keras/api/_v2', '/home/daniel/.local/lib/python3.10/site-packages/keras/_tf_keras', '/home/daniel/.local/lib/python3.10/site-packages/tensorflow', '/home/daniel/.local/lib/python3.10/site-packages/tensorflow/_api/v2']
>>>

注意:目前tensorflow的安装存在一些GPU版本的问题,参考下面的链接资料。

2.6 安装PyTorch

具体安装版本因硬件差异,命令不同,详见:Install pytorch

在这里插入图片描述因为,笔者这里环境是Jetson Orin,所以选择了上面的配置版本:

$ pip install torch torchvision torchaudio

2.7 安装nbdiff

鉴于.ipynb文件会包含最后一次执行的输出信息,不像通常代码diff那样可以看的很清楚,这里需要安装一个类似diff的命令。

$ pip install nbdime

$ nbdiff --help
usage: nbdiff [-h] [--version] [--config] [--log-level {DEBUG,INFO,WARN,ERROR,CRITICAL}] [-s] [-o] [-a] [-m] [-i] [-d] [--color-words] [--no-color] [--no-git] [--no-use-diff] [--out OUT]
              [base] [remote] [paths ...]

Compute the difference between two Jupyter notebooks.

positional arguments:
  base                  the base notebook filename OR base git-revision.
  remote                the remote modified notebook filename OR remote git-revision.
  paths                 filter diffs for git-revisions based on path

options:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  --config              list the valid config keys and their current effective values
  --log-level {DEBUG,INFO,WARN,ERROR,CRITICAL}
                        set the log level by name.
  --color-words         whether to pass the --color-words flag to any internal calls to git diff
  --no-color            prevent use of ANSI color code escapes for text output
  --no-git              prevent use of git for formatting diff/merge text output
  --no-use-diff         prevent use of diff/diff3 for formatting diff/merge text output
  --out OUT             if supplied, the diff is written to this file. Otherwise it is printed to the terminal.

ignorables:
  Set which parts of the notebook (not) to process.

  -s, --sources, -S, --ignore-sources
                        process/ignore sources.
  -o, --outputs, -O, --ignore-outputs
                        process/ignore outputs.
  -a, --attachments, -A, --ignore-attachments
                        process/ignore attachments.
  -m, --metadata, -M, --ignore-metadata
                        process/ignore metadata.
  -i, --id, -I, --ignore-id
                        process/ignore identifiers.
  -d, --details, -D, --ignore-details
                        process/ignore details not covered by other options.

3. 测试DEMO

学习是一个过程,是一种大学生应该掌握的技能。手把手教那是在学校,真正的学习是不断的自我学习和提高,这种螺旋式学习技能将会受益一辈子!

即使很好的搭建了环境,代码依然会出现问题!

001_Keras-Linear-Regression

$ git log -n 2
commit 84b7f5ee7c80d9faecf79af96f8a677f47c44f0d (HEAD -> main, origin/main, origin/HEAD)
Author: Daniel Li <lida_mail@163.com>
Date:   Tue Apr 23 16:49:42 2024 +0800

    Fix Keras-Linear-Regression demo code issue with Jammy(Jetson Orin)

commit 8c89b4c2b9e9df2e854f280ce19ed3010c7ac2fc
Author: Daniel Li <lida_mail@163.com>
Date:   Tue Apr 23 15:00:46 2024 +0800

    Add raw 001_Keras-Linear-Regression/Keras-Linear-Regression.ipynb

3.1 numpy版本兼容问题

在这里插入图片描述
解决方法:numpy版本降级

$ pip install numpy==1.23.4

3.2 karas API - model.compile问题

在这里插入图片描述

解决方法:修正API入参参数

## modified /cells/15/source:
@@ -1,2 +1,2 @@
-model.compile(optimizer=tf.keras.optimizers.RMSprop(lr=.005),
+model.compile(optimizer=tf.keras.optimizers.RMSprop(learning_rate=.005),
               loss='mse')

3.3 karas API - model.predict问题

在这里插入图片描述
解决方法:修正API入参参数

## modified /cells/23/source:
@@ -1,5 +1,5 @@
 # Predict the median price of a home with [3, 4, 5, 6, 7] rooms.
-x = [3, 4, 5, 6, 7]
-y_pred = model.predict(x)
-for idx in range(len(x)):
-    print("Predicted price of a home with {} rooms: ${}K".format(x[idx], int(y_pred[idx]*10)/10))

+rooms = [3, 4, 5, 6, 7]
+y_pred = model.predict(x = np.array(rooms))
+for idx in range(len(rooms)):
+    print("Predicted price of a home with {} rooms: ${}K".format(rooms[idx], int(y_pred[idx][0]*10)/10))

4. 总结

学习的第一步,总是感觉那么繁琐,如果感兴趣可以直接写一个setup.sh脚本。

但从学习的角度,一个问题,一个脚印,一步步的操作,纠错,理解,为后续组件/系统的理解可以奠定非常好的基础。

万事开头难,其实就是这么简单的一回事情!

关于线性拟合,这个大家估计能看到这里的兄弟们,都懂的。后面我们也会专门看下科学计算方法和这个神经网络拟合之间的差异。

切记一点,神经网络这个是模拟人类大脑的的工作模式,尽管对于人类大脑工作原理远没有搞得这么清楚,但是从目前的一些视频/图片识别角度看,该方法确实比较好的解决了多因素预测的准确性问题(大概率的准确性)。

相信数学原理更深层次的论证有待去研究渐近和收敛的问题,或者说需要更好的专业领域知识叠加神经网络算法来做到更好的应用。

5. 参考资料

【1】Jammy@Jetson Orin - Tensorflow & Keras Get Started

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

ye@ye-virtual-machine:~/Desktop$ cd ye@ye-virtual-machine:~$ sudo systemctl start docker [sudo] password for ye: Sorry, try again. [sudo] password for ye: Sorry, try again. [sudo] password for ye: ye@ye-virtual-machine:~$ sudo docker run hello-world Unable to find image &#39;hello-world:latest&#39; locally docker: Error response from daemon: Get &quot;https://registry-1.docker.io/v2/&quot;: context deadline exceeded Run &#39;docker run --help&#39; for more information ye@ye-virtual-machine:~$ sudo systemctl restart docker ye@ye-virtual-machine:~$ aem -h Usage: /usr/bin/aem &lt;subcommand&gt; [...args] Subcommands: version Show aem version create|start Create and start a new environment remove Remove and stop an existing environment list List all available environments enter Enter an environment exec Execute a command in an environment help Show this help message bootstrap Launch dreamview and monitor profile Manage profiles ye@ye-virtual-machine:~$ cd application-core ye@ye-virtual-machine:~/application-core$ aem start [WARN ] 2025-03-18 08:29:04 apollo environment `10.0.0_pkg&#39; already exists, enter directly. Or you can use flag `--force&#39; to recreate it. [ye@in-dev-docker:/apollo_workspace]$ buildtool build -p core /usr/bin/buildtool:36: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html from pkg_resources import parse_version [buildtool] 2025-03-18 08:30:23 INFO Download the latest package index to construct a local database... [buildtool] 2025-03-18 08:30:27 INFO update repo apollo-tools [buildtool] 2025-03-18 08:30:28 INFO update repo apollo-core-jammy [buildtool] 2025-03-18 08:30:28 INFO update repo apollo-core [buildtool] 2025-03-18 08:30:30 WARNING Gpu is not available, using cpu instead [buildtool] 2025-03-18 08:30:30 INFO Reconfigure apollo enviroment setup [buildtool] 2025-03-18 08:30:44 INFO Analyz
03-19
(venv) gapinyc@DESKTOP-9QS7RL5:~/superset$ # 添加 Microsoft GPG key 和源 curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list &gt; /etc/apt/sources.list.d/mssql-release.list # 更新并安装 sudo apt-get update sudo ACCEPT_EULA=Y apt-get install -y msodbcsql17 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)). E: This command can only be used by root. 100 975 100 975 0 0 2164 0 --:--:-- --:--:-- --:--:-- 2166 curl: (23) Failed writing body -bash: /etc/apt/sources.list.d/mssql-release.list: Permission denied Hit:1 https://deb.nodesource.com/node_18.x nodistro InRelease Hit:2 http://archive.ubuntu.com/ubuntu jammy InRelease Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB] Get:4 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB] Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [3073 kB] Get:6 http://archive.ubuntu.com/ubuntu jammy-updates/main Translation-en [474 kB] Get:7 http://archive.ubuntu.com/ubuntu jammy-updates/restricted Translation-en [900 kB] Get:8 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1242 kB] Get:9 http://archive.ubuntu.com/ubuntu jammy-updates/universe Translation-en [308 kB] Get:10 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB] Get:11 http://security.ubuntu.com/ubuntu jammy-security/main amd64 c-n-f Metadata [13.9 kB] Fetched 6395 kB in 42s (153 kB/s) Reading package lists... Done Reading package lists... Done Building dependency tree... Done Reading state information... Done E: Unable to locate package msodbcsql17
最新发布
11-05
&lt;think&gt;首先,用户的问题是:在已安装ros-humble-ign-ros2-control的情况下,运行ros2 run pluginlib pluginlib_parsable --class hardware_interface::SystemInterface提示&quot;No executable found&quot;,询问是否有影响。 从之前的对话中,我记得用户的系统是ROS 2 Humble,并且他们在尝试解决一些与Gazebo控制插件相关的问题。我建议他们安装gz-ros2-control,但用户现在说安装了ign-ros2-control。 回顾引用: - 引用[1]是关于安装ROS 2 Humble的教程。 - 引用[2]是关于使用Docker运行ROS Humble。 - 引用[3]是关于在WSL下安装ROS的常见问题。 用户的上一个问题:用户听说ign-ros2-control是旧名称,gz-ros2-control是新名称,功能重叠。我解释了它们的关系,并建议使用gz-ros2-control。 现在用户的问题是:在安装了ros-humble-ign-ros2-control后,运行ros2 run pluginlib pluginlib_parsable --class hardware_interface::SystemInterface得到&quot;No executable found&quot;,是否有影响。 我需要分析: - pluginlib_parsable 是一个ROS命令行工具,用于列出插件。 - 运行 ros2 run pluginlib pluginlib_parsable --class hardware_interface::SystemInterface 应该列出所有注册的SystemInterface插件。 - 如果提示&quot;No executable found&quot;,意思是找不到pluginlib_parsable这个可执行文件。 在ROS 2中,pluginlib_parsable 是pluginlib包的一部分。pluginlib是pluginlib on GitHub,用于加载插件。 在ROS 2 Humble中,pluginlib应该已经安装,因为它是核心包。但用户运行 ros2 run pluginlib pluginlib_parsable 找不到可执行文件。 可能的原因: - pluginlib包没有被正确安装- 用户的环境没有设置好。 - 或者,在ROS 2的某些版本中,这个命令可能没有提供或名称不同。 检查标准安装: 在ROS 2 Humble中,pluginlib包通常随桌面安装一起安装。用户提到安装了桌面版(根据引用[1],他们选择了桌面版)。 运行 ros2 run pluginlib pluginlib_parsable 应该有效。如果找不到,可能意味着pluginlib包没有安装或其可执行文件没有被source到环境中。 用户说安装了ros-humble-ign-ros2-control,这可能无关,因为ign-ros2-control是Gazebo控制插件,而pluginlib是独立的包。 核心问题:缺少pluginlib_parsable可执行文件。 是否有影响: - 是的,因为没有这个工具,用户无法轻松列出插件,比如验证GazeboSystem插件是否注册。在我的上一个回答中,我建议使用这个命令来验证插件可见性。 所以,影响是用户无法通过这个命令检查插件。但这并不是致命的;用户可能通过其他方式检查,比如运行节点并查看日志,或者检查插件描述文件。 但在上下文中,用户需要这个来调试他们的Gazebo控制插件问题。 因此,回答应该: - 解释为什么找不到这个可执行文件。 - 建议如何安装或修复。 - 讨论是否有影响,并提供替代方案。 步骤: 1. 确认问题:运行 ros2 run pluginlib pluginlib_parsable --class hardware_interface::SystemInterface 提示 &quot;No executable found&quot;。 2. 原因:可能pluginlib包没有安装,或者环境设置问题。 3. 检查安装:运行 apt list --installed | grep ros-humble-pluginlib 查看是否安装了pluginlib。 4. 安装:如果没有,安装它:sudo apt install ros-humble-pluginlib。 5. 设置环境:确保source了setup文件。 6. 替代验证方式:如果没有安装或不工作,用户可以通过其他方式检查插件,比如查看 /opt/ros/humble/lib 中的库文件,或者在启动节点时看日志输出。 7. 影响:对于调试插件注册,没有这个工具,用户可能需要直接手动检查,但它不是必需的;插件本身可能 still work if registered correctly. 在用户的上一个场景,我建议使用这个命令来验证 gz_ros2_control/GazeboSystem 插件。如果没有这个工具,用户可以通过运行 Gazebo 仿真并查看硬件接口是否正常工作来判断。 现在,生成相关问题: - 根据用户的问题,相关问题应该围绕ROS插件、调试、安装等。 - 例如: 1. 如何安装ROS 2中的pluginlib工具? 2. ROS 2插件有哪些调试方法? 3. 如何在ROS 2中手动列出插件类? 确保回答: - 结构化:先解释问题,然后分析影响,最后提供解决方案。 - 使用中文。 - 引用相关段落末尾自然地添加引用标识。在这个问题中,引用[1],[2],[3]是关于安装的,可能不直接相关,但可以提到用户安装了桌面版ROS,理应包括pluginlib。 - 数学公式:如果涉及公式,用 $...$,但这个问题可能不需要公式。 - 代码块:如果需要命令,用代码块包裹。 回答结构: ### 问题分析 解释为什么找不到可执行文件。 ### 影响评估 讨论是否有影响。 ### 解决方案 建议如何修复或替代方法。 ### 相关问题 生成几个相关问题。 &lt;/think&gt;### 问题分析 在已安装 `ros-humble-ign-ros2-control` 的情况下,运行 `ros2 run pluginlib pluginlib_parsable --class hardware_interface::SystemInterface` 提示 **&quot;No executable found&quot;**,这表示系统未找到 `pluginlib_parsable` 可执行文件。以下是核心原因: - **pluginlib_parsable 的作用**:此工具是 `pluginlib` 包的一部分,用于列出已注册的插件类(如 `hardware_interface::SystemInterface`),是调试插件可见性的关键工具[^1]。 - **缺失原因**: - `pluginlib` 包未安装:尽管您安装了 ROS 2 Humble 桌面版(包含核心工具),但 `pluginlib` 可能因依赖关系未被自动包含。 - 环境未正确设置:如果未正确 `source` ROS 环境,可能导致命令不可见。 - 版本兼容性问题:`ign-ros2-control` 是旧包,在 Humble 中可能存在工具链差异,但不会直接影响此命令的执行。 ### 是否有影响? #### ✅ 直接影响:是 - **无法直接验证插件**:您无法通过此命令检查 `ign-ros2-control` 或 `gz-ros2-control` 的插件注册状态(例如 `ign_ros2_control/IgnitionSystem`)。 - **调试受阻**:在 Gazebo 集成调试中,此工具常用于确认硬件接口插件是否被正确加载。缺失工具会增加问题排查难度。 #### ⚠️ 间接影响:可控 - 插件功能可能正常工作:只要插件库文件存在且配置正确,仿真可能仍能运行。 - 替代验证方法:可通过其他方式间接验证(见解决方案)。 ### 解决方案 #### 步骤 1: 安装 pluginlib 包 运行以下命令安装缺失的 `pluginlib` 工具: ```bash sudo apt install ros-humble-pluginlib # 安装 pluginlib 核心包 ``` 验证安装: ```bash apt list --installed | grep ros-humble-pluginlib # 应输出包版本信息 ``` #### 步骤 2: 设置环境并重试 重新 source ROS 环境后执行命令: ```bash source /opt/ros/humble/setup.bash # 确保环境变量生效 ros2 run pluginlib pluginlib_parsable --class hardware_interface::SystemInterface ``` 正常输出应包含注册的插件类,例如: ``` &quot;ign_ros2_control/IgnitionSystem&quot; # 若使用 ign-ros2-control &quot;gz_ros2_control/GazeboSystem&quot; # 若迁移到 gz-ros2-control ``` #### 步骤 3: 替代验证方法(如果工具仍不可用) - **检查插件库文件**: ```bash ls /opt/ros/humble/lib | grep ign_ros2_control # 确认插件 .so 文件存在 ``` - **通过启动日志验证**:运行 Gazebo 仿真节点,查看日志是否输出插件加载成功: ```bash ros2 launch your_package simulation.launch.py # 输出中搜索 &quot;Successfully loaded&quot; ``` - **手动查询插件描述**:检查插件 XML 文件: ```bash cat /opt/ros/humble/share/ign_ros2_control/plugins.xml # 确认类名定义 ``` ### 关键说明 - **ign-ros2-control vs gz-ros2-control**:在 ROS 2 Humble 中,`ign-ros2-control` 是合法包,但官方推荐逐步迁移到 `gz-ros2-control`(新名称)。安装 `ign-ros2-control` 不会导致此工具缺失,根本问题在于 `pluginlib` 未安装[^1][^2]。 - **优先级**:若需长期调试 Gazebo 集成,建议安装 `gz-ros2-control`: ```bash sudo apt install ros-humble-gz-ros2-control # 替换旧包 ``` ### 相关问题 1. 如何正确迁移从 `ign-ros2-control` 到 `gz-ros2-control`? 2. ROS 2 插件调试有哪些常用工具和方法? 3. 如何手动验证硬件接口插件是否被加载? 4. Gazebo 仿真中插件加载失败的常见原因有哪些? [^1]: Ubuntu22.04.1安装ROS2入门级教程(ros-humble)。输入密码,在选项界面选择1-一键安装ROS,接着根据你的情况选择是否更换系统源(基础篇更换了就不用了),接着等待一会就会让你选择要安装的ROS2版本了。这里选择humble版本的ROS2即可。接着会问你安装桌面版还是基础版,我们选择桌面版,包含可视化工具,如果是在树莓派上装可以使用基础版。链接直达。 [^2]: 由于测试ROS代码出现不同的环境,但是自己的电脑安装了 Ubuntu20.04,自己电脑只能安装 ROS-Noetic, 但是测试其他代码的时候需要 ROS-Humble。为了能够最快地搭建 ROS-Humble 的环境,这里借助 docker 实现。 [^3]: wsl下安装ros2问题: Unable to locate package ros-humble-desktop 解决方案。❗ 问题 在wsl(Ubuntu 22.04版本)下安装ros的过程中,在执行命令 $ sudo apt install ros-humble-desktop 一直弹出报错:Unable to locate package ros-humble-desktop 前面设置编码和添加源的过程中一直没有出现其他问题,只有到这步报错了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值