Python 3.x 使用hyperas查找Keras模型参数时出现解码问题,可能是由于“hyperopt”中的“试用”功能造成的`

Python 3.x 使用hyperas查找Keras模型参数时出现解码问题,可能是由于“hyperopt”中的“试用”功能造成的`,python-3.x,numpy,keras,hyperopt,hyperas,Python 3.x,Numpy,Keras,Hyperopt,Hyperas,我正在使用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,

我正在使用
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)
[3]中的
:%run1dcnn.py
---------------------------------------------------------------------------
UnicodeDecodeError回溯(最近一次呼叫最后一次)
~/subg\u ps/cnn\u train/1dCNN.py in()
127 algo=tpe.建议,
128最大值=20,
-->129次试验=试验()
130 trX,trY,teX,teY=data()
131打印(“最佳性能模型评估:”)
最小化中的~/anaconda3/lib/python3.6/site-packages/hyperas/optim.py(模型、数据、算法、最大值、试验、函数、rseed、笔记本名称、详细信息、评估空间、返回空间、保持温度)
67笔记本名称=笔记本名称,
68 verbose=冗长,
--->69保持温度=保持温度)
70
71最佳_模型=无
~/anaconda3/lib/python3.6/site-packages/hyperas/optim.py在base\u minimizer中(模型、数据、函数、算法、最大值、试验、rseed、完整模型字符串、笔记本名称、详细信息、堆栈、保持温度)
96型号str=完整型号字符串
97其他:
--->98 model_str=get_hyperopt_model_string(模型、数据、函数、笔记本名称、详细信息、堆栈)
99 temp_file='./temp_model.py'
100个写入临时文件(型号、临时文件)
get\u hyperopt\u model\u字符串中的~/anaconda3/lib/python3.6/site-packages/hyperas/optim.py(模型、数据、函数、笔记本名称、详细信息、堆栈)
184调用_script_file=os.path.abspath(inspect.stack()[stack][1])
185打开(调用脚本文件“r”)作为f:
-->186 source=f.read()
187
188已清理的\u源=删除所有\u注释(源)
解码中的~/anaconda3/lib/python3.6/encodings/ascii.py(self,input,final)
24类增量编码器(编解码器.增量编码器):
25 def解码(自身、输入、最终=假):
--->26返回编解码器。ascii_解码(输入,自身错误)[0]
27
28类StreamWriter(编解码器、编解码器、StreamWriter):
UnicodeDecodeError:“ascii”编解码器无法解码位置4785处的字节0xe8:序号不在范围内(128)
我想我最好把所有的追踪放在这里,所有的代码如下:


我认为这个问题是由于
hyperopt
中的
Trials
功能造成的,但我没有发现任何像我这样的相关问题

我可以通过将unicode字符串(PY3默认值)转换为bytestring,然后尝试对其进行解码来重新创建错误:

In [347]: astr = 'abc'+chr(0xe8)+'xyz'                                                    
In [348]: astr                                                                            
Out[348]: 'abcèxyz'
In [349]: astr.encode('latin1')                                                           
Out[349]: b'abc\xe8xyz'
In [350]: astr.encode('latin1').decode('ascii')                                           
---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-350-1825a76f5d5b> in <module>
----> 1 astr.encode('latin1').decode('ascii')

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 3: ordinal not in range(128)
[347]中的
astr='abc'+chr(0xe8)+'xyz'
在[348]中:应科院
Out[348]:“abcèxyz”
在[349]中:asr.encode('latin1')
Out[349]:b'abc\xe8xyz'
在[350]中:astr.encode('latin1')。decode('ascii'))
---------------------------------------------------------------------------
UnicodeDecodeError回溯(最近一次呼叫最后一次)
在里面
---->1应收账款编码('latin1')。解码('ascii')
UnicodeDecodeError:“ascii”编解码器无法解码位置3中的字节0xe8:序号不在范围内(128)
hyperas
get\u hyperopt\u model\u string()
中读取某种脚本文件。我不知道是什么变量控制了这个读数,可能是
笔记本
。我认为从
npy
文件加载的数组与此问题无关。它正在解码一个大字符串(位置4785),而不是数组中的某个元素


简而言之,这是一个
hyperas
模型问题,而不是
npy
文件问题。

问题已经解决。
调用
optim.minimize
函数时,我们必须首先定义两个名为
data
model
的函数,而不是我所称的
create\u model
或其他任何函数。这是一个非常严格的限制。

从错误及其回溯中,您知道哪个数组有问题吗?
标签
样本
数组与模型调用之间有什么联系?我看不到这些变量。这些
npy
文件的来源是什么。请注意,
encoding
参数的适用性非常有限(请阅读文档)。不,回溯只是告诉我错误来自第一个引用的代码,
label
sample
包含
data=data
参数。我搜索了这个错误的解决方案,并推断它是由于我输入的数据造成的。我的
npy
文件是由python3从我的另一个程序生成的,因此,我认为这里不应该有这个错误。我已经阅读了文档,只是在这里尝试参数
编码
,以防万一,但是没有。我找不到任何控制读取的相关参数,也许我最好更改问题的描述。多谢各位。