我有一个想从cmd提示符运行的python程序,但是每次尝试时,它总是给我一个错误“ NameError:未定义名称cPickle”。

我正在使用python 2.7,这是我安装的唯一版本。
我试图修改代码并使它导入泡菜而不是导入cPickle,但是它仍然无法正常工作。

import pickle
#import cPickle
import gzip

# Third-party libraries
import numpy as np

def load_data():

    f = gzip.open('../data/mnist.pkl.gz', 'rb')
    training_data, validation_data, test_data = cPickle.load(f)
    f.close()
    return (training_data, validation_data, test_data)

def load_data_wrapper():
    tr_d, va_d, te_d = load_data()
    training_inputs = [np.reshape(x, (784, 1)) for x in tr_d[0]]
    training_results = [vectorized_result(y) for y in tr_d[1]]
    training_data = zip(training_inputs, training_results)
    validation_inputs = [np.reshape(x, (784, 1)) for x in va_d[0]]
    validation_data = zip(validation_inputs, va_d[1])
    test_inputs = [np.reshape(x, (784, 1)) for x in te_d[0]]
    test_data = zip(test_inputs, te_d[1])
    return (training_data, validation_data, test_data)

def vectorized_result(j):
    e = np.zeros((10, 1))
    e[j] = 1.0
    return e


我改变了说

training_data, validation_data, test_data = cPickle.load(f)




training_data, validation_data, test_data = pickle.load(f)


这不起作用,由于某种原因,我找不到在线安装的cPickle软件包。有人可以帮我解决这个问题的办法!

最佳答案

解决有关cPickle是否可用的不确定性的典型方法是尝试加载它,如果您的Python解释器不提供此模块,则退回到pickle

try:
    import cPickle as pickle
except ImportError:
    import pickle


...之后,无论哪种情况,您都可以无条件使用pickle名称。

关于python - 处理cPickle不可用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35096875/

10-12 18:54