Keras model.to_json() 错误:“rawunicodeescape”编解码器无法解码位置 94-98 中的字节:截断 \uXXXX

问题描述 投票:0回答:4
model.to_json()

对于型号

____________________________________________________________________________________________________ 层(类型)输出形状参数#
连接到
=================================================== =================================================== lambda_1(Lambda)(无、3、160、320)0
lambda_input_1[0][0]
____________________________________________________________________________________________________ 卷积2d_1(卷积2D)(无、1、40、16)327696
lambda_1[0][0]
_____________________________________________________________________________________ elu_1 (ELU)(无、1、40、16)0
卷积2d_1[0][0]
____________________________________________________________________________________________________ 卷积2d_2(卷积2D)(无、1、20、32)12832
elu_1[0][0]
_____________________________________________________________________________________ elu_2 (ELU)(无、1、20、32)0
卷积2d_2[0][0]
_____________________________________________________________________________________ 卷积2d_3(卷积2D)(无、1、10、64)51264
elu_2[0][0]
_____________________________________________________________________________________ 展平_1(展平)(无,640)0
卷积2d_3[0][0]
___________________________________________________________________________________________ dropout_1(辍学)(无,640)0
展平_1[0][0]
____________________________________________________________________________________________________ elu_3 (ELU)(无,640)0
dropout_1[0][0]
___________________________________________________________________________________________ 密集_1(密集)(无,512)328192
elu_3[0][0]
__________________________________________________________________________________________ dropout_2(辍学)(无,512)0
密集_1[0][0]
_____________________________________________________________________________________ elu_4 (ELU)(无,512)0
dropout_2[0][0]
___________________________________________________________________________________________ 密集_2(密集)(无,1)513
elu_4[0][0]
=================================================== ===================================================总参数:720,497 可训练参数:720,497 不可训练参数: 0 ____________________________________________________________________________________________________ 无

抛出异常

“rawunicodeescape”编解码器无法解码位置 94-98 中的字节: 被截断的\uXXXX

可能是什么问题以及如何解决?

python unicode keras
4个回答
18
投票

您的代码似乎位于这样的目录中:“C:\Users\python\u{...}.py”。这种错误与 python 3 版本有关,在该版本中我们得到特殊字符 \u 并且无法在 Windows 机器上对其进行解码。您可以更改文件名或文件的完整路径,以便它不包含特殊字符或从文件

generic_utils.py
中为函数“func_dump”制作补丁(可以通过以下路径“keras/utils/generic_utils.py”访问) 。您应该将第
code = marshal.dumps(func.__code__).decode('raw_unicode_escape')
行替换为第
code = marshal.dumps(func.__code__).replace(b'\\',b'/').decode('raw_unicode_escape')
行。


4
投票

我在使用带有tensorflow-gpu后端的keras 1.2.1时遇到了类似的问题。

我发现这是因为 Windows 10 周年纪念版在编码正斜杠字符时出现问题。

使用 Lambda 层会使

to_json()
调用失败,但切换到批量归一化效果很好。

model = Sequential()

# model.add(Lambda(lambda x: x / 255. - .5, input_shape=INPUT_DIMENSIONS))
model.add(BatchNormalization(input_shape=INPUT_DIMENSIONS, axis=1))
. . . 
# POST PROCESSING, SAVE MODEL TO DISK
with open('model.json', 'w') as json_file:
    json_file.write(model.to_json())

这不是一个理想的解决方案,但希望它对将来关注这个问题的人有用。


0
投票

我相信这实际上是由于 Keras 中的错误造成的,幸运的是已由 Keras pull request #8572 修复。然而,该 PR 最近才被合并,虽然它已合并到最新的 pypi 版本中,但在最新的 conda 版本中却not,这就是我收到此错误的原因。

通过

pip install keras
而不是
conda install keras
安装 Keras 使一切对我来说都有效(尽管我还必须在此之前使用
conda install pip
才能让 pip 正常工作)。


0
投票

我最近在尝试保存 keras 模型时遇到了这个问题。 我解决这个问题的方法是以这种方式将所有

forward and backslash
加倍
//
\\

这样我就可以避免这样的情况,其中

\u
是一个特殊的 unicode 字符,并且 Windows 会有不同的解释。

c:\desktop\uranuimmodel.keras'

所以我宁愿将上面的内容改为

c:\\desktop\\uranuimmodel.keras'

您可以阅读更多这里

我希望这对将来的人有帮助

© www.soinside.com 2019 - 2024. All rights reserved.