gpt4 book ai didi

python-3.x - python 3.5 错误 : can't add `map` results together

转载 作者:行者123 更新时间:2023-12-01 02:45:30 25 4
gpt4 key购买 nike

我有一段使用 python 2.7 的代码,我正在尝试转换它,以便我可以将它与 python 3.5 一起使用,但由于映射,我在流动代码中遇到错误。解决这个问题的最佳方法是什么?

文件“/Users/newbie/anaconda3/lib/python3.5/site-packages/keras/caffe/caffe_utils.py”,第 74 行,parse_network blobs = top_blobs + bottom_blobs

TypeError: + 不支持的操作数类型: 'ma​​p' 和 'ma​​p'

 def parse_network(layers, phase):
'''
Construct a network from the layers by making all blobs and layers(operations) as nodes.
'''
nb_layers = len(layers)
network = {}

for l in range(nb_layers):
included = False
try:
# try to see if the layer is phase specific
if layers[l].include[0].phase == phase:
included = True
except IndexError:
included = True

if included:
layer_key = 'caffe_layer_' + str(l) # actual layers, special annotation to mark them
if layer_key not in network:
network[layer_key] = []
top_blobs = map(str, layers[l].top)
bottom_blobs = map(str, layers[l].bottom)
blobs = top_blobs + bottom_blobs

for blob in blobs:
if blob not in network:
network[blob] = []
for blob in bottom_blobs:
network[blob].append(layer_key)
for blob in top_blobs:
network[layer_key].append(blob)
network = acyclic(network) # Convert it to be truly acyclic
network = merge_layer_blob(network) # eliminate 'blobs', just have layers
return network

最佳答案

Python 3 中的

map 返回一个迭代器,而 Python 2 中的 map 返回一个列表:

python 2:

>>> type(map(abs, [1, -2, 3, -4]))
<type 'list'>

python 3:

>>> type(map(abs, [1, -2, 3, -4]))
<class 'map'>

(请注意,map 更加特殊,但它肯定不是 list。)

您不能简单地添加迭代器。但是您可以使用 itertools.chain 链接它们:

>>> from itertools import chain
>>> chain(map(abs, [1, -2, 3, -4]), map(abs, [5, -6, 7, -8]))
<itertools.chain object at 0x7fe0dc0775f8>

对于最终结果,您要么必须遍历链,要么对其求值:

>>> for value in chain(map(abs, [1, -2, 3, -4]), map(abs, [5, -6, 7, -8])):
... print(value)
...
1
2
3
4
5
6
7
8

>>> list(chain(map(abs, [1, -2, 3, -4]), map(abs, [5, -6, 7, -8])))
[1, 2, 3, 4, 5, 6, 7, 8]

请注意,前者更自然,除非绝对必要,否则应避免将迭代器作为最后一个示例进行评估:它可以节省内存和可能的计算能力(例如,在循环中有中断的地方,以便进一步值不必评估)。

关于python-3.x - python 3.5 错误 : can't add `map` results together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35691489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com