JSONDecodeError: Expecting value: line 1 column 1 (char 0) on Raspberry Pi's Imager (GNU/Linux)
JSONDecodeError: Expecting value: line 1 column 1 (char 0) on Raspberry Pi's Imager (GNU/Linux)
我在windows中做了一个图像识别神经网络。对其进行了测试,它有效(万岁!)。它使用张量流。
现在我想将它传输到 Raspberry Pi 的 Imager 上,然后 运行 将它传输到虚拟环境 (virtualenv) 中。
我安装了所有库 - 老实说这是一项艰巨的工作,并测试了它们并且似乎一切正常。
重要提示:
- windows 上的脚本有一个名为 saved_model 的附加文件夹,其中包含模型,另一个名为 venv 的文件夹,我想,它包含依赖项和导入的库,但我不确定。
- 我不得不在虚拟机中手动安装 tensorflow,因为 Google 在 Raspberry Pi 的 Imager 上不太支持它,但社区维护了一个受支持的版本。我在 Raspberry Pi 上使用 2.5.0-rc 因为它是 Legacy 版本支持的最后一个。我还使用旧版本来访问工作中的相机模块,因为我注意到 python 中的相机模块和库尚未完全实现,PiCamera2 处于早期测试阶段版本,我很难安装它,除了更多的问题。话虽如此,这就是我使用旧版本的原因,值得注意的是它是 32 位版本。另一方面,我在 PC 上使用 2.8.0 版本的 Python。这不是一个很好的解决方案,但这是我得到的。
话虽如此,经过将近一周的努力,并且有几次几乎完全放弃整个项目,我设法安装了所有东西,现在正处于在 Raspberry Pi 上安装它的最后阶段.
我很遗憾收到这条消息:
File "test.py", line 17, in <module>
model = keras.models.load_model('saved_model/my_model')
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/save.py", line 206, in load_model
return saved_model_load.load(filepath, compile, options)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py", line 146, in load
keras_loader.load_layers(compile=compile)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py", line 380, in load_layers
node_metadata.metadata)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py", line 420, in _load_layer
obj, setter = self._revive_from_config(identifier, metadata, node_id)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py", line 445, in _revive_from_config
obj, self._proto.nodes[node_id], node_id)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py", line 305, in _add_children_recreated_from_config
metadata = json_utils.decode(proto.user_object.metadata)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/json_utils.py", line 62, in decode
return json.loads(json_string, object_hook=_decode_helper)
File "/usr/lib/python3.7/json/__init__.py", line 361, in loads
return cls(**kw).decode(s)
File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
这里是程序的相关代码。
# Import required Libraries
import os
from tkinter import *
import cv2
import numpy as np
from PIL import Image
from PIL import ImageTk
from playsound import playsound
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # To get rid of all these warnings
from tensorflow import keras
from tensorflow import nn
from tensorflow import where
model = keras.models.load_model('saved_model/my_model')
cap = cv2.VideoCapture(0)
if not (cap.isOpened()):
print("Video device not connected.")
win = Tk()
win.geometry("640x550")
label = Label(win)
label.grid(row=0, column=0)
cap = cv2.VideoCapture(0)
可能是Tensorflow版本不兼容?但是我对此表示怀疑,因为这些版本相距并不远,但您永远不知道……或者我放置文件的方式?我的意思是我将这些文件直接放在同一个文件夹中,例如 windows,就在 env 文件旁边。但这不应该是这样,因为我之前用 hello world 程序测试过它。 (这些文件与 env 在同一个文件夹中。我的意思是有一个名为“env”的文件夹,其中包含 bin 和 virtualenv 所需的其他内容,还有 saved_model、venv 和 .py 文件)
无论如何,我们将不胜感激。
非常感谢,
马库斯
我在这里遇到了同样的问题,这是 因为 Tensorflow 和 Keras 版本 在 windows(在 2.8.0 上工作)和 [=35 上的不兼容=] os(在 2.0.0 上工作)。
由于无法os升级我的 Raspberry pi 上的 Tensorflow 和 Keras 版本,我不得不在 windows 上设置版本 2.0.0 并训练模型有了它,Raspberry Pi 上的 keras.models.load_model
函数就起作用了 (JSON 解码器错误会消失).
我还必须在 windows 和 Raspberry Pi 上安装 h5py 版本 2.10.0 以使用 Tensorlow 和 Keras 2.0.0。
尝试在 windows 上安装与 Raspberry Pi 上相同的 2.5.0-rc 版本,然后再次训练您的模型,希望它有效。
我在windows中做了一个图像识别神经网络。对其进行了测试,它有效(万岁!)。它使用张量流。
现在我想将它传输到 Raspberry Pi 的 Imager 上,然后 运行 将它传输到虚拟环境 (virtualenv) 中。
我安装了所有库 - 老实说这是一项艰巨的工作,并测试了它们并且似乎一切正常。
重要提示:
- windows 上的脚本有一个名为 saved_model 的附加文件夹,其中包含模型,另一个名为 venv 的文件夹,我想,它包含依赖项和导入的库,但我不确定。
- 我不得不在虚拟机中手动安装 tensorflow,因为 Google 在 Raspberry Pi 的 Imager 上不太支持它,但社区维护了一个受支持的版本。我在 Raspberry Pi 上使用 2.5.0-rc 因为它是 Legacy 版本支持的最后一个。我还使用旧版本来访问工作中的相机模块,因为我注意到 python 中的相机模块和库尚未完全实现,PiCamera2 处于早期测试阶段版本,我很难安装它,除了更多的问题。话虽如此,这就是我使用旧版本的原因,值得注意的是它是 32 位版本。另一方面,我在 PC 上使用 2.8.0 版本的 Python。这不是一个很好的解决方案,但这是我得到的。
话虽如此,经过将近一周的努力,并且有几次几乎完全放弃整个项目,我设法安装了所有东西,现在正处于在 Raspberry Pi 上安装它的最后阶段.
我很遗憾收到这条消息:
File "test.py", line 17, in <module>
model = keras.models.load_model('saved_model/my_model')
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/save.py", line 206, in load_model
return saved_model_load.load(filepath, compile, options)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py", line 146, in load
keras_loader.load_layers(compile=compile)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py", line 380, in load_layers
node_metadata.metadata)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py", line 420, in _load_layer
obj, setter = self._revive_from_config(identifier, metadata, node_id)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py", line 445, in _revive_from_config
obj, self._proto.nodes[node_id], node_id)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/load.py", line 305, in _add_children_recreated_from_config
metadata = json_utils.decode(proto.user_object.metadata)
File "/home/pi/project/env/lib/python3.7/site-packages/tensorflow/python/keras/saving/saved_model/json_utils.py", line 62, in decode
return json.loads(json_string, object_hook=_decode_helper)
File "/usr/lib/python3.7/json/__init__.py", line 361, in loads
return cls(**kw).decode(s)
File "/usr/lib/python3.7/json/decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/usr/lib/python3.7/json/decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
这里是程序的相关代码。
# Import required Libraries
import os
from tkinter import *
import cv2
import numpy as np
from PIL import Image
from PIL import ImageTk
from playsound import playsound
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' # To get rid of all these warnings
from tensorflow import keras
from tensorflow import nn
from tensorflow import where
model = keras.models.load_model('saved_model/my_model')
cap = cv2.VideoCapture(0)
if not (cap.isOpened()):
print("Video device not connected.")
win = Tk()
win.geometry("640x550")
label = Label(win)
label.grid(row=0, column=0)
cap = cv2.VideoCapture(0)
可能是Tensorflow版本不兼容?但是我对此表示怀疑,因为这些版本相距并不远,但您永远不知道……或者我放置文件的方式?我的意思是我将这些文件直接放在同一个文件夹中,例如 windows,就在 env 文件旁边。但这不应该是这样,因为我之前用 hello world 程序测试过它。 (这些文件与 env 在同一个文件夹中。我的意思是有一个名为“env”的文件夹,其中包含 bin 和 virtualenv 所需的其他内容,还有 saved_model、venv 和 .py 文件)
无论如何,我们将不胜感激。
非常感谢, 马库斯
我在这里遇到了同样的问题,这是 因为 Tensorflow 和 Keras 版本 在 windows(在 2.8.0 上工作)和 [=35 上的不兼容=] os(在 2.0.0 上工作)。
由于无法os升级我的 Raspberry pi 上的 Tensorflow 和 Keras 版本,我不得不在 windows 上设置版本 2.0.0 并训练模型有了它,Raspberry Pi 上的 keras.models.load_model
函数就起作用了 (JSON 解码器错误会消失).
我还必须在 windows 和 Raspberry Pi 上安装 h5py 版本 2.10.0 以使用 Tensorlow 和 Keras 2.0.0。
尝试在 windows 上安装与 Raspberry Pi 上相同的 2.5.0-rc 版本,然后再次训练您的模型,希望它有效。