在下面的代码片段中,
if evaluation_data:
n_data = len(evaluation_data)
n = len(training_data)
evaluation_cost, evaluation_accuracy = [], []
training_cost, training_accuracy = [], []
for j in list(range(epochs)):
random.shuffle(training_data)
mini_batches = training_data[k:k+mini_batch_size]您可以看到,我没有使用xrange.Although --代码是为在pyhton2上运行而编写的,而是重新分解以在python3上运行它。然而,我总是会犯这样的错误:
................................Directory/network2.py", line 147, in SGD
for j in list(range(epochs)):
NameError: name 'xrange' is not defined一开始,我只使用range()。然后,在了解到range()不是python3中的列表之后,我做了list(range())。但是,在这两种修改的情况下,我都会得到xrange的错误。如果有人能帮忙就好了。
发布于 2017-10-19 20:50:42
您正在运行陈旧的字节码,重新启动Python。
Python将源代码编译为字节码,并对后者进行解释。这意味着解释器编译后不能处理源代码。
然而,我们人类无法很好地阅读字节码,因此当出现异常时,当解释器希望我们了解哪里出错时,它会再次向您展示源代码。因此,当需要显示回溯时,将根据需要加载源代码,并根据字节码记录的信息从源代码中提取行。
在您的示例中,您正在运行使用名称xrange的字节码。但是,您已经更正了源代码,转而使用range。字节码抛出一个异常,Python帮助从磁盘加载源代码,并显示已经更正的源代码。
解决方案是通过重新启动告诉Python重新编译源代码。如果重新启动没有帮助,那么Python已经确定源代码比它缓存的字节码更旧。删除源代码旁边的__pycache__目录以清除字节码缓存,并删除可能与源代码位于同一目录中的任何.pyc文件。
请注意,您可以删除list()调用;您不需要有一个列表才能使for循环工作;for j in range(epoch):工作得很好。
https://stackoverflow.com/questions/46838639
复制相似问题