keras,构建GRU模型时,在需要进行随机搜索对units进行传值时,回出现TypeError: object of type 'numpy.int32' has no len()错误。
举例说明:
p = {'neurons': np.random.choice([10,20])}
model = Sequential()
model.add(GRU(units=params['gru1_neurons'], input_shape=(12, 12), return_sequences=False,dropout = 0., recurrent_dropout = 0.)
这个时候运行代码时,会报错TypeError: object of type 'numpy.int32' has no len()
查看API得知:units: Positive integer, dimensionality of the output space
而type(p['gru1_neurons']) 为:numpy.int32.
int 和 numpy.int32 具体有什么不同,请查阅[1]
那么答案就有了,只需要将numpy.int32 转换为int类型就可以了。
[2]中给出了具体做法。那么最终修改为:
model.add(GRU(units=params['gru1_neurons'].item(), input_shape=(12, 12), return_sequences=False,dropout = 0., recurrent_dropout = 0.)
[1]https://stackoverrun.com/cn/q/10516538
[2]https://stackoverflow.com/questions/9452775/converting-numpy-dtypes-to-native-python-types