有人可以告诉我以下两种符号之间的区别,一种是工作,另一种不是,但它们对我来说似乎是一样的。
def GradientDescentCostTest():
theta = numpy.array([0, 0, 0], numpy.float)
features = numpy.array([[80, 20, 0], [65, 30, 1], [70, 23, 1]], numpy.float)
values = numpy.array([20, 10, 14], numpy.float)
# This works and returns a value for cost:
sumOfSquareErrors = numpy.square(numpy.dot(features, theta) - values).sum()
cost = sumOfSquareErrors/(len(values)*2)
# This doesn't work and returns value 0.0 for cost:
cost = 1/(len(values)*2) * numpy.square(numpy.dot(features, theta) - values).sum()
return cost
print GradientDescentCostTest()
由于
答案 0 :(得分:3)
1/(len(values)*2)
等于0
,因为所有操作都在整数上。一个简单的解决方法是使用1.0/(len(values)*2)
。