问题
在看零基础入门深度学习(1) - 感知器https://www.zybuluo.com/hanbingtao/note/433855时,运行代码出现以下问题:
map(lambda (x, w): x * w, SyntaxError: invalid syntax
代码是:
reduce(lambda a, b: a + b,
map(lambda (x, w): x * w,
zip(input_vec, self.weights))
, 0.0) + self.bias)
原因
以上代码是python2中的,而python3中,已经不支持元组式的捆绑,lambda (x, w): x * w是错误的。
解决方案
要将map(lambda (x, w): x * w, zip(input_vec, self.weights))改写为
[x * w for x,w in zip(input_vec, self.weights)]
顺便将另一个代码也改写
self.weights = map(
lambda (x, w): w + rate * delta * x,
zip(input_vec, self.weights))
self.weights = [w + rate * delta * x for x,w in zip(input_vec, self.weights)]