Raspberry Pi 上的 Theano 和 Keras
Theano with Keras on Raspberry Pi
我试图让 Theano 在 Raspberry Pi 3 (B) 上与 Keras 一起 运行 但没有成功。我尝试 Ubuntu MATE 和 Raspbian 作为操作系统,但没有成功。为了安装 Theano 和 Keras,我采取了以下步骤:
- 安装miniconda(armv7发行版)
- 通过 Conda(如果可能)安装所有 Theano 依赖项(如图 here),
pip
和 apt-get
- 安装 Theano
- 安装 Keras
上述步骤没有任何问题。在下一步中,我构建了一个小测试脚本 (test.py),它通过
加载已构建的模型
from keras.models import load_model
model = load_model('model.hdf5')
加载模型时,出现以下错误
Segmentation fault (core dumped)
然后我试着进一步调查这个问题,按照这个关于 SO (What causes a Python segmentation fault?) 的回答:
gdb python
> run test.py
当我 运行 我得到:
Program received SIGSEV, Segmentation fault.
0x76fd9822 in ?? () from /lib/ld-linux-armhf.so.3
下一步我在gdb中运行 shell:
> backtrace
得到了
#0 0x76fd9822 in ?? () from /lib/ld-linux-armhf.so.3
#1 0x76fd983a in ?? () from /lib/ld-linux-armhf.so.3
这是我不知道的地方,我想问一下,是否有人可以指出我如何解决这个问题并让 keras + theano 到 运行 的方向Raspberry Pi.
(我也尝试过使用 TensorFlow 作为替代方案,但遇到了同样的问题)
非常感谢。
编辑
我做了更多的调查。如果我 run Keras with TensorFlow 问题似乎会有所改变。我再次 运行 gdb,但错误现在发生在 numpy 中,尤其是在 libopenblas.so.0
中
Program received signal SIGSEV, Segmentation fault.
0x75ead7cc in inner_thread()
from /home/<path>/numpy/core/../../../../libopenblas.so.0
这有帮助吗?
编辑 2
我在没有使用 Miniconda 的情况下安装了所有东西,Keras 现在可以与 TensorFlow 一起使用(但还不能与 Theano 一起使用)。
目前的解决方案是在安装时避免使用 miniconda。
为了进一步诊断,ld-linux-armhf.so.3 和 libopenblas.so.0 有 -g
个调试符号可用。
如果您提供了 python 的版本,那将会很有用。如果您使用的是 python3.7,请尝试恢复到 python3.6,因为 keras 尚未跟上开发进度,并且在 python3.7 上安装带有 keras 的 tensorflow 存在很多问题。我在这里强调版本,因为我最近在使用 conda 安装时遇到了同样的问题,我意识到问题是 python 版本。
但我在让 tensorflow 在 PI 上运行时也遇到了问题。但是我使用了 ubuntu 中的 pip 直接安装而不是 miniconda 并且它有效。 Google Tensorflow 团队自己提到的最好的方法是按照 link 中的说明从源代码实际构建 tensorflow。
https://www.tensorflow.org/install/source_rpi
因此,如果可以,请尝试将 python 的版本降级到 3.6 或更低版本,并尝试使用 pip 安装或使用 python3.6 或 3.7 从源代码构建。
我认为 运行在 Raspberry Pi 上使用 Keras 和 Tensorflow 不是一个好主意,因为 运行 在我大学的机器上使用它们比 [=12= 强大得多],给了很多麻烦。
错误可能是由于内存不足引起的。我猜这是因为当我尝试 运行 一些复杂模型时,我的机器遇到了这个问题。
我试图让 Theano 在 Raspberry Pi 3 (B) 上与 Keras 一起 运行 但没有成功。我尝试 Ubuntu MATE 和 Raspbian 作为操作系统,但没有成功。为了安装 Theano 和 Keras,我采取了以下步骤:
- 安装miniconda(armv7发行版)
- 通过 Conda(如果可能)安装所有 Theano 依赖项(如图 here),
pip
和apt-get
- 安装 Theano
- 安装 Keras
上述步骤没有任何问题。在下一步中,我构建了一个小测试脚本 (test.py),它通过
加载已构建的模型from keras.models import load_model
model = load_model('model.hdf5')
加载模型时,出现以下错误
Segmentation fault (core dumped)
然后我试着进一步调查这个问题,按照这个关于 SO (What causes a Python segmentation fault?) 的回答:
gdb python
> run test.py
当我 运行 我得到:
Program received SIGSEV, Segmentation fault.
0x76fd9822 in ?? () from /lib/ld-linux-armhf.so.3
下一步我在gdb中运行 shell:
> backtrace
得到了
#0 0x76fd9822 in ?? () from /lib/ld-linux-armhf.so.3
#1 0x76fd983a in ?? () from /lib/ld-linux-armhf.so.3
这是我不知道的地方,我想问一下,是否有人可以指出我如何解决这个问题并让 keras + theano 到 运行 的方向Raspberry Pi.
(我也尝试过使用 TensorFlow 作为替代方案,但遇到了同样的问题)
非常感谢。
编辑
我做了更多的调查。如果我 run Keras with TensorFlow 问题似乎会有所改变。我再次 运行 gdb,但错误现在发生在 numpy 中,尤其是在 libopenblas.so.0
中Program received signal SIGSEV, Segmentation fault.
0x75ead7cc in inner_thread()
from /home/<path>/numpy/core/../../../../libopenblas.so.0
这有帮助吗?
编辑 2
我在没有使用 Miniconda 的情况下安装了所有东西,Keras 现在可以与 TensorFlow 一起使用(但还不能与 Theano 一起使用)。
目前的解决方案是在安装时避免使用 miniconda。
为了进一步诊断,ld-linux-armhf.so.3 和 libopenblas.so.0 有 -g
个调试符号可用。
如果您提供了 python 的版本,那将会很有用。如果您使用的是 python3.7,请尝试恢复到 python3.6,因为 keras 尚未跟上开发进度,并且在 python3.7 上安装带有 keras 的 tensorflow 存在很多问题。我在这里强调版本,因为我最近在使用 conda 安装时遇到了同样的问题,我意识到问题是 python 版本。
但我在让 tensorflow 在 PI 上运行时也遇到了问题。但是我使用了 ubuntu 中的 pip 直接安装而不是 miniconda 并且它有效。 Google Tensorflow 团队自己提到的最好的方法是按照 link 中的说明从源代码实际构建 tensorflow。 https://www.tensorflow.org/install/source_rpi
因此,如果可以,请尝试将 python 的版本降级到 3.6 或更低版本,并尝试使用 pip 安装或使用 python3.6 或 3.7 从源代码构建。
我认为 运行在 Raspberry Pi 上使用 Keras 和 Tensorflow 不是一个好主意,因为 运行 在我大学的机器上使用它们比 [=12= 强大得多],给了很多麻烦。 错误可能是由于内存不足引起的。我猜这是因为当我尝试 运行 一些复杂模型时,我的机器遇到了这个问题。