因此,我正在学习机器学习算法,而且即使在上一个单元格中定义了这个NameError: name ' ' is not defined
,我也不知道为什么得到这个numpy
。
在下面的代码中,如您所见,我已经定义了一些名称并导入了In[1]
,当我尝试运行最后一个单元格(In [1])时,出现名称错误,并且导入问题。
如果我从定义它们的先前单元格中复制定义的名称,然后将其粘贴到发生错误的单元格NameError Traceback (most recent call last) <ipython-input-1-698c7414b772> in <module> ----> 1 noise = np.random.uniform(-1,1,(obs,1)) 2 targets = 2*xs - 3*zs + 5 + noise 3 init_range = 0.1 4 weights = np.random.uniform(-init_range,init_range, size=(2,1)) 5 biases = np.random.uniform(-init_range,init_range,size=1) NameError: name 'np' is not defined
上,则它可以正常工作,但没有任何意义;为什么我必须在每个单元格上重新定义名称?导入库时会发生完全相同的事情,我必须在每个单元格上执行它,否则它将无法工作。这可能是一个非常基本的问题,但是我开始学习,这些简单的细节使我感到恐惧。
错误消息:In[4]: import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
In[6]: noise = np.random.uniform(-1,1,(obs,1))
targets = 2*xs - 3*zs + 5 + noise
print(targets.shape)
In[7]: import numpy as np
init_range = 0.1
weights = np.random.uniform(-init_range,init_range, size=(2,1))
biases = np.random.uniform(-init_range,init_range,size=1)
print(weights)
print(biases)
In[9]: learning_rate = 0.02
In[1]: for i in range (100):
outputs = np.dot(inputs,weights) + biases
deltas = outputs - targets
loss = np.sum(deltas ** 2) / 2 / obs
print(loss)
deltas_scaled= deltas/obs
weights = weights - learning_rate * np.dot(inputs.T,deltas_scaled)
biases = biases - learning_rate * np.sum(deltas_scaled)
代码:
{{1}}
我希望该算法能显示出随我定义的学习率而降低的值,但确实如此,但是让我重新定义了所有内容之后。我希望我能解释清楚。