keras, 构建GRU传值 Units时,报错,TypeError: object of type ‘numpy.int32‘ has no len()

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

你可能感兴趣的:(机器学习)