[英]ModuleNotFoundError: No module named 'pyLDAvis' in anaconda spyder
[英]It's OK if run in anaconda prompt but ModuleNotFoundError: No module named 'keras' in Spyder
我运行了一个从GitHub下载的项目。 奇怪的是,如果我在anaconda提示符下运行它,它是可以的,但是如果我在Spyder中运行它,它就会出现(我在win10中安装了anaconda和Sypder,并且也安装了keras):
runfile('E:/MySourceCode/neural_image_captioning-master-oarriaga/src/train.py', wdir='E:/MySourceCode/neural_image_captioning-master-oarriaga/src') 重载模块:评估器、生成器回溯(最近一次调用):
File "", line 1, in runfile('E:/MySourceCode/neural_image_captioning-master-oarriaga/src/train.py', wdir='E:/MySourceCode/neural_image_captioning-master-oarriaga/src')
文件“D:\\ProgramData\\Anaconda3\\lib\\site-packages\\spyder\\utils\\site\\sitecustomize.py”,第 710 行,在运行文件 execfile(filename, namespace) 中
文件“D:\\ProgramData\\Anaconda3\\lib\\site-packages\\spyder\\utils\\site\\sitecustomize.py”,第 101 行,在 execfile exec(compile(f.read(), filename, 'exec'), namespace)
文件“E:/MySourceCode/neural_image_captioning-master-oarriaga/src/train.py”,第 3 行,来自 keras.callbacks import CSVLogger
ModuleNotFoundError:没有名为“keras”的模块
train.py 如下:
from evaluator import Evaluator
from generator import Generator
from keras.callbacks import CSVLogger
from keras.callbacks import ModelCheckpoint
from keras.callbacks import ReduceLROnPlateau
from models import NIC
from data_manager import DataManager
num_epochs = 50
batch_size = 64
root_path = '../datasets/IAPR_2012/'
captions_filename = root_path + 'IAPR_2012_captions.txt'
data_manager = DataManager(data_filename=captions_filename,
max_caption_length=30,
word_frequency_threshold=2,
extract_image_features=False,
cnn_extractor='inception',
image_directory=root_path + 'iaprtc12/',
split_data=True,
dump_path=root_path + 'preprocessed_data/')
data_manager.preprocess()
print(data_manager.captions[0])
print(data_manager.word_frequencies[0:20])
preprocessed_data_path = root_path + 'preprocessed_data/'
generator = Generator(data_path=preprocessed_data_path,
batch_size=batch_size)
num_training_samples = generator.training_dataset.shape[0]
num_validation_samples = generator.validation_dataset.shape[0]
print('Number of training samples:', num_training_samples)
print('Number of validation samples:', num_validation_samples)
model = NIC(max_token_length=generator.MAX_TOKEN_LENGTH,
vocabulary_size=generator.VOCABULARY_SIZE,
rnn='gru',
num_image_features=generator.IMG_FEATS,
hidden_size=128,
embedding_size=128)
model.compile(loss='categorical_crossentropy',
optimizer = 'adam',
metrics=['accuracy'])
print(model.summary())
print('Number of parameters:', model.count_params())
training_history_filename = preprocessed_data_path + 'training_history.log'
csv_logger = CSVLogger(training_history_filename, append=False)
model_names = ('../trained_models/IAPR_2012/' +
'iapr_weights.{epoch:02d}-{val_loss:.2f}.hdf5')
model_checkpoint = ModelCheckpoint(model_names, #Callback
monitor='val_loss',
verbose=1,
save_best_only=False,
save_weights_only=False)
reduce_learning_rate = ReduceLROnPlateau(monitor='val_loss', factor=0.1, #Callback
patience=5, verbose=1)
callbacks = [csv_logger, model_checkpoint, reduce_learning_rate]
model.fit_generator(generator=generator.flow(mode='train'),
steps_per_epoch=int(num_training_samples / batch_size),
epochs=num_epochs,
verbose=1,
callbacks=callbacks,
validation_data=generator.flow(mode='validation'),
validation_steps=int(num_validation_samples / batch_size))
evaluator = Evaluator(model, data_path=preprocessed_data_path,
images_path=root_path + 'iaprtc12/')
evaluator.display_caption()
在 Spyder 中设置有什么问题吗? 在 anoconda 提示中,“激活 tensorflow”之前和“激活 tensorflow”之后的 pip keras 有什么区别吗?非常感谢。
这可能是您的 keras 安装问题。 如果您已经尝试安装它:
$ conda install keras
它没有用,我建议卸载它,然后用 pip3 重新安装它:
$ conda uninstall keras
$ sudo pip3 install keras
您可以通过在 Spyder 中导入 keras 来检查它是否有效:
> import keras
错误可能是您使用了错误的环境。 在 anaconda navigator 中,在启动 spyder 之前确保您处于正确的环境中
如果您使用的是 conda,那么最好尽可能使用 conda 安装所有内容,而不是将其与 pip 混用。
conda 的目的是你可以创建多个环境,每个环境都安装了不同的包,或者同一个包的不同版本,而不会引起冲突,因为一次只激活一个环境。 这些包包括 Python 本身和 Spyder。 因此,要在 Spyder 中使用 Python 模块,您需要创建一个包含模块和 Spyder 的 conda 环境:
conda create -n mykerasenv keras spyder
然后要使用该环境,您需要在启动 Spyder 之前激活它:
activate mykerasenv # (or 'source activate mykerasenv' if that doesn't work)
spyder
根据您的 conda/Anaconda 安装,您可以通过 Anaconda Navigator 和/或 Anaconda Start 菜单快捷方式执行相同的操作,但命令行版本应始终有效。
如果确实需要使用 pip 安装无法通过 conda 获取的包,则需要在创建并激活 conda 环境后执行此操作,以便 pip 将其安装在正确的位置。
如果您已经尝试将东西安装到您的根 conda 环境中(即没有先使用conda create
创建一个新环境然后激活它),那么您最好卸载 Anaconda 并从头开始。 如果其中任何一个令人困惑,我建议再次阅读conda 文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.