python - 树莓派上的 CNN 模型
问题描述
我正在开展一个涉及在 Raspberry pi 3B 上进行青光眼检测的项目。该模型是在我的笔记本电脑上训练的,文件大小约为 400mb “.h5”。我正在尝试使用 keras 将模型加载到 pi 上 pi 似乎加载了其他较小的模型,但我的却出现了这个错误:
2018-05-15 18:07:04.117054: W tensorflow/core/framework/allocator.cc:101] Allocation of 134217728 exceeds 10% of system memory.
2018-05-15 18:07:05.052281: W tensorflow/core/framework/allocator.cc:101] Allocation of 134217728 exceeds 10% of system memory.
2018-05-15 18:07:05.513437: W tensorflow/core/framework/allocator.cc:101] Allocation of 134217728 exceeds 10% of system memory.
2018-05-15 18:07:06.191609: W tensorflow/core/framework/allocator.cc:101] Allocation of 134217728 exceeds 10% of system memory.
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1322, in _do_call
return fn(*args)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1307, in _run_fn
options, feed_dict, fetch_list, target_list, run_metadata)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1409, in _call_tf_sessionrun
run_metadata)
tensorflow.python.framework.errors_impl.InternalError: Could not allocate ndarray
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.5/dist-packages/keras/models.py", line 273, in load_model
topology.load_weights_from_hdf5_group(f['model_weights'], model.layers)
File "/usr/local/lib/python3.5/dist-packages/keras/engine/topology.py", line 3393, in load_weights_from_hdf5_group
K.batch_set_value(weight_value_tuples)
File "/usr/local/lib/python3.5/dist-packages/keras/backend/tensorflow_backend.py", line 2377, in batch_set_value
get_session().run(assign_ops, feed_dict=feed_dict)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 900, in run
run_metadata_ptr)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1135, in _run
feed_dict_tensor, options, run_metadata)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1316, in _do_run
run_metadata)
File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/client/session.py", line 1335, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InternalError: Could not allocate ndarray
任何帮助,将不胜感激。谢谢!
解决方案
构建一个足够大的模型,最终它不适合 1Gb Pi。你在那儿。
你有三个选择:
- 建立一个较小的模型,或
- 查看是否有可以关闭的非必要服务(例如,如果您没有使用监视器运行,请尝试 Raspian 的服务器安装),或者
- 升级到具有更多 RAM 的东西。例如,Asus Tinker 或 Oroid-2 板,它们的大小与 Pi 相同,但具有 2Gb 的 RAM。
推荐阅读
- ios - 通过 Firebase 函数发送的 Swift 中的加密推送通知
- django-templates - 未找到带有参数 '(' ',)' 的 'files' 的修订版。尝试了 1 种模式:
- ssl - 如何禁用 ssl 证书并仅用于转发 Nginx 中端口 443 上的流量?
- visual-studio - 无法从云端打开 Web 应用程序
- java - 杰克逊 - 接受对象属性上的空字符串
- arrays - 如何通过迭代在字典键值中使用 switch case
- google-apps-script - 正确编写 onEdit
- c++ - 模板专业化不匹配错误
- java - 如何通过单个命令为文件夹中的所有 thrift 文件生成所有类?
- django - 在 Django 中使用 PostgreSQL 聚合表达式