【发布时间】:2019-03-19 16:04:37
【问题描述】:
我正在使用hyperas 模块调整我的Keras 模型并返回错误:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 4785: ordinal not in range(128)
调用处出错,语法trials:
if __name__ == '__main__':
best_run, best_model = optim.minimize(model=create_model,
data=data,
algo=tpe.suggest,
max_evals=20,
trials=Trials())
我认为问题的根源是由于我加载的 numpy .npy 文件是 ascii 编码格式数据。
那么,如何将ascii 格式更改为utf-8 格式?
我通过添加encoding='latin1' 看到了一些类似的解决方案,但它不起作用。
label =np.load(os.getcwd()+'/Simu_Sample_label_1000.npy',encoding="latin1")
sample=np.load(os.getcwd()+'/Training_Sample_1000.npy',encoding="latin1")
在此处添加我的整个回溯:
In [3]: %run 1dCNN.py
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
~/subg_ps/cnn_train/1dCNN.py in <module>()
127 algo=tpe.suggest,
128 max_evals=20,
--> 129 trials=Trials())
130 trX, trY, teX, teY = data()
131 print("Evalutation of best performing model:")
~/anaconda3/lib/python3.6/site-packages/hyperas/optim.py in minimize(model, data, algo, max_evals, trials, functions, rseed, notebook_name, verbose, eval_space, return_space, keep_temp)
67 notebook_name=notebook_name,
68 verbose=verbose,
---> 69 keep_temp=keep_temp)
70
71 best_model = None
~/anaconda3/lib/python3.6/site-packages/hyperas/optim.py in base_minimizer(model, data, functions, algo, max_evals, trials, rseed, full_model_string, notebook_name, verbose, stack, keep_temp)
96 model_str = full_model_string
97 else:
---> 98 model_str = get_hyperopt_model_string(model, data, functions, notebook_name, verbose, stack)
99 temp_file = './temp_model.py'
100 write_temp_files(model_str, temp_file)
~/anaconda3/lib/python3.6/site-packages/hyperas/optim.py in get_hyperopt_model_string(model, data, functions, notebook_name, verbose, stack)
184 calling_script_file = os.path.abspath(inspect.stack()[stack][1])
185 with open(calling_script_file, 'r') as f:
--> 186 source = f.read()
187
188 cleaned_source = remove_all_comments(source)
~/anaconda3/lib/python3.6/encodings/ascii.py in decode(self, input, final)
24 class IncrementalDecoder(codecs.IncrementalDecoder):
25 def decode(self, input, final=False):
---> 26 return codecs.ascii_decode(input, self.errors)[0]
27
28 class StreamWriter(Codec,codecs.StreamWriter):
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 4785: ordinal not in range(128)
我想我最好把所有的traceback放在这里,所有的代码如下: https://github.com/MinghaoDu1994/MyPythonFunctions/blob/master/1Dcnn
我认为问题出在hyperopt 中的功能Trials,但我没有找到像我这样的相关问题。
【问题讨论】:
-
从错误及其回溯中你知道哪个数组有问题吗?
label和sample数组与模型调用之间有什么联系?我没有看到这些变量。这些npy文件的来源是什么。请注意,encoding参数的适用性非常有限(阅读文档)。 -
不,回溯只是告诉我错误来自第一个引用的代码,
label和sample包含data=data参数。我搜索了这个错误的解决方案,并推断它是由于我输入的数据造成的。我的npy文件是由 python3 从我的其他程序生成的,因此,我认为这里不应该出现此错误。我已阅读文档并在此处尝试参数encoding以防万一,但它没有。
标签: python-3.x numpy keras hyperopt hyperas