list(a)会对a中的全部元素进行遍历,之后组成一个list
[]仅仅是将a这个整体当成list的第一个元素
a = dict().fromkeys([1,2,3],0)
print([a])
print(list(a))
结果:
[{1: 0, 2: 0, 3: 0}]
[1, 2, 3]
今天在写keras的时候就遇到了这个问题
model = tf.keras.models.Model(inputs=inputs, outputs=list(output))
上面代码报了个这么个错误:
TypeError: Cannot iterate over a tensor with unknown first dimension.
我想,就算batchsize对应的维度是None,也不应该报错啊。这里我将outputs转换为list是看了下keras.engin.network的源码,里面在初始化图的时候会将inputs和outputs转换为list。
所以,我就想我自己手动转换下吧,结果想了半天,仔细看里面的代码+试了半天才搞明白,我那个outputs是个Tensor类型的张量,用list(outputs)应该会对它进行迭代拆分,恰好它的第一维度(batchsize维度)为None,因此报错。