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

时间:2017-01-25 09:06:50

标签: python unicode keras

model.to_json()

为模型

  

____________________________________________________________________________________________________图层(类型)输出形状参数#
  连接到   ================================================== ================================================== lambda_1(Lambda)(无,3,160,320)0
  lambda_input_1 [0] [0]
  ____________________________________________________________________________________________________ convolution2d_1(卷积2D)(无,1,40,16)327696
  lambda_1 [0] [0]
  ____________________________________________________________________________________________________ elu_1(ELU)(无,1,40,16)0
  convolution2d_1 [0] [0]
  ____________________________________________________________________________________________________ convolution2d_2(Convolution2D)(无,1,20,32)12832
  elu_1 [0] [0]
  ____________________________________________________________________________________________________ elu_2(ELU)(无,1,20,32)0
  convolution2d_2 [0] [0]
  ____________________________________________________________________________________________________ convolution2d_3(Convolution2D)(无,1,10,64)51264
  elu_2 [0] [0]
  ____________________________________________________________________________________________________ flatten_1(展平)(无,640)0
  convolution2d_3 [0] [0]
  ____________________________________________________________________________________________________ dropout_1(辍学)(无,640)0
  flatten_1 [0] [0]
  ____________________________________________________________________________________________________ elu_3(ELU)(无,640)0
  dropout_1 [0] [0]
  ____________________________________________________________________________________________________ dense_1(密集)(无,512)328192
  elu_3 [0] [0]
  ____________________________________________________________________________________________________ dropout_2(Dropout)(无,512)0
  dense_1 [0] [0]
  ____________________________________________________________________________________________________ elu_4(ELU)(无,512)0
  dropout_2 [0] [0]
  ____________________________________________________________________________________________________ dense_2(密集)(无,1)513
  elu_4 [0] [0]
  ================================================== ==================================================总参数:720,497可训练参数:720,497非训练参数:   0   ____________________________________________________________________________________________________无

抛出异常

  

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

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

3 个答案:

答案 0 :(得分: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')

答案 1 :(得分: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())

不是一个理想的解决方案,但希望它适用于将来看这个的人。

答案 2 :(得分:0)

我认为这实际上是由于Keras中的一个错误,幸好由Keras pull request #8572修复。然而,PR最近才刚刚合并,虽然它已被合并到最新的pypi版本中,但它在最新的conda版本中,这就是为什么我得到这个错误。

通过pip install keras代替conda install keras安装Keras使一切都适合我(虽然我也必须在此之前使用conda install pip才能让pip正常工作)。