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的主要内容,如果未能解决你的问题,请参考以下文章