今天在学习keras的时候遇见了这个报错 很懵逼,中文翻译出来就是Dense这个玩意不是个迭代器,迭代器在这里又是个啥???
代码如下
model = Sequential(Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax'))
去查看Sequential的源码,构造函数是这么写的
def __init__(self, layers=None, name=None):
super(Sequential, self).__init__(name=name)
self._build_input_shape = None
# Add to the model any layers passed to the constructor.
if layers:
for layer in layers:
self.add(layer)
这时候就会发现一个for循环从layers中取出每个layer,这个操作似曾相识,列表里的操作?于是乎我加了一个这个中括号在Dense的外面
model = Sequential([Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax')])
运行成功
当然我们不能这么就解决问题不思考了,我想做个错误的小测试
nums = 5
for num in nums:
print(num)
会报错
TypeError: ‘int’ object is not iterable
嗷原来是这样,虽然小白还是不太懂迭代器是什么,但是感觉清晰了一点