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

Posted

技术标签:

【中文标题】Keras model.to_json() 错误:“rawunicodeescape”编解码器无法解码位置 94-98 中的字节:截断 \\uXXXX【英文标题】:Keras model.to_json() error: 'rawunicodeescape' codec can't decode bytes in position 94-98: truncated \uXXXXKeras model.to_json() 错误:“rawunicodeescape”编解码器无法解码位置 94-98 中的字节:截断 \uXXXX 【发布时间】:2017-06-10 09:13:45 【问题描述】:
model.to_json()

对于模型

____________________________________________________________________________________________________ 图层(类型)输出形状参数 # 已连接到 ================================================== ================================================== lambda_1 (Lambda) (无, 3, 160, 320) 0 lambda_input_1[0][0] ____________________________________________________________________________________________________ 卷积 2d_1 (Convolution2D) (无, 1, 40, 16) 327696 lambda_1[0][0] ____________________________________________________________________________________________________ elu_1 (ELU) (无, 1, 40, 16) 0 卷积2d_1[0][0] ____________________________________________________________________________________________________ convolution2d_2 (Convolution2D) (None, 1, 20, 32) 12832 elu_1[0][0] ____________________________________________________________________________________________________ elu_2 (ELU) (无, 1, 20, 32) 0 卷积2d_2[0][0] ____________________________________________________________________________________________________ 卷积 2d_3 (Convolution2D) (无, 1, 10, 64) 51264 elu_2[0][0] ____________________________________________________________________________________________________ 展平_1(展平)(无,640)0 卷积2d_3[0][0] ____________________________________________________________________________________________________ 辍学_1(辍学)(无,640)0 flatten_1[0][0] ____________________________________________________________________________________________________ elu_3 (ELU) (无, 640) 0 dropout_1[0][0] ____________________________________________________________________________________________________ 密集_1(密集)(无,512)328192 elu_3[0][0] ____________________________________________________________________________________________________ 辍学_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

可能是什么问题,我该如何解决?

【问题讨论】:

【参考方案1】:

您的代码似乎在这样的目录中:“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') 行。

【讨论】:

对于任何想知道的人,他的意思是编辑您的 keras 源代码副本并更改此行:github.com/fchollet/keras/blob/master/keras/utils/… @Smashking,感谢您提供该文件的直接链接。【参考方案2】:

我在使用带有 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())

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

【讨论】:

【参考方案3】:

我相信这实际上是由于 Keras 中的一个错误,谢天谢地由 Keras pull request #8572 修复。但是,该 PR 仅在最近才合并,虽然它已合并到最新的 pypi 版本中,但它不是在最新的 conda 版本中,这就是我收到此错误的原因。

通过pip install keras 而不是conda install keras 安装Keras 让我一切正常(尽管我还必须在此之前加上conda install pip 才能让pip 正常工作)。

【讨论】:

以上是关于Keras model.to_json() 错误:“rawunicodeescape”编解码器无法解码位置 94-98 中的字节:截断 \uXXXX的主要内容,如果未能解决你的问题,请参考以下文章

保存和检索模型名称

keras的一些错误

Keras 错误:无法将符号 Keras 输入/输出转换为 numpy 数组

预测的keras错误

Keras 中的“无法解释优化器标识符”错误

Keras 模型错误