当前位置: 首页 > 知识库问答 >
问题:

如果在anaconda提示符下运行也可以,但ModuleNotFoundError:Spyder中没有名为“keras”的模块

卫英悟
2023-03-14

我运行一个从GitHub下载的项目。奇怪的是,如果我在anaconda提示符中运行它,它是正常的,但是如果我在Spyder中运行它,它就会出现(我在win10中安装了anaconda和Sypder,也安装了keras):

runfile('E:/MySourceCode/neural\u image\u captiting-master-oarriaga/src/train.py',wdir='E:/MySourceCode/neural\u image\u captiting-master-oarriaga/src')重新加载的模块:计算器、生成器回溯(最后一次调用):

文件“”,第1行,在运行文件中('E:/MySourceCode/neural\u image\u captiting-master-oarriaga/src/train.py',wdir='E:/MySourceCode/neural\u image\u captiting-master-oarriaga/src')

文件“D:\ProgramData\Anaconda3\lib\site packages\spyder\utils\site\sitecustomize.py”,第710行,在runfile execfile(文件名,命名空间)中

文件“D:\ProgramData\Anaconda3\lib\site packages\spyder\utils\site\sitecustomize.py”,第101行,在execfile exec(compile(f.read(),filename,'exec'),命名空间)中

文件“E:/MySourceCode/neural\u image\u captiting-master-oarriaga/src/train.py”,第3行,来自keras。回调导入CSVLogger

ModuleNotFoundError:没有名为“keras”的模块

火车具体如下:

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提示符中,当pip keras在“激活张量流”之前和“激活张量流”之后有什么区别吗?非常感谢。

共有3个答案

仇浩旷
2023-03-14

如果您使用的是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开始菜单快捷方式执行相同的操作,但命令行版本应始终有效。

如果您确实需要使用pip来安装一个无法通过conda获得的包,您需要在创建和激活conda环境后进行安装,以便pip将其安装在正确的位置。

如果您尝试过将东西安装到您的根conda环境中(即不首先使用conda创建创建一个新环境,然后激活它),那么您最好卸载Anaconda并从头开始。如果这其中有任何困惑,我建议再读一次conda文档。

荣俊杰
2023-03-14

错误可能是您使用了错误的环境。在蟒蛇导航仪中,确保你在发射spyder之前处于正确的环境中

索和璧
2023-03-14

您的keras安装可能有问题。如果您已尝试使用以下工具安装它:

$ conda install keras

它不工作,我建议卸载它,然后用pip3重新安装它:

$ conda uninstall keras
$ sudo pip3 install keras

您可以通过在Spyder中导入keras来检查它是否有效:

> import keras
 类似资料:
  • 我不能导入在PyCharm IDE在Mac上。我尝试过使用、、和简易安装来安装和卸载Keras,但都没有成功。我尝试过更换解释器(Python 2.7和3.6),但都不起作用。 在终端中,当我运行时: pip3列表|grep-i keras 我得到: Keras 2.2.2 Keras-应用程序1.0.4 Keras-预处理1.0.2 我认为这意味着我的Keras安装是成功的。我还通过以下方式检查

  • 问题内容: 我已经安装了Scrapy,并以python导入,一切正常。但是当我尝试http://scrapy- chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html中 的示例时,它会导致错误。 我跑步,然后得到: 问题答案: 您需要升级pyopenssl

  • 我有一个与这个问题非常相似的问题。我的Windows 7 64位系统上只安装了一个版本的python 3.5。我通过官方网站安装了Anaconda3.4,正如问题中所建议的那样。安装进行得很顺利,但当我想导入时(我只是从命令行键入python) 然后我退出并键入 已满足要求(使用--upgrade to upgrade):d:\program Files\anaconda3\lib\site软件包

  • 错误:命令出错,退出状态为1:“C:\Users\Hp\Anaconda3\envs\rasa\python”。exe‘-u-c‘导入系统,setuptools,标记化;系统。argv[0]=“”“”C:\Users\Hp\AppData\Local\Temp\pip-install-h_n6a0vq\ujson\setup。py“”“”;file=“”“”C:\Users\Hp\AppData\

  • 问题内容: 我正在运行Keras模型,提交截止日期为36小时,如果我在cpu上训练我的模型大约需要50个小时,是否可以在gpu上运行Keras? 我正在使用Tensorflow后端,并在未安装anaconda的Jupyter笔记本上运行它。 问题答案: 是的,您可以在GPU上运行keras模型。几件事您将必须首先检查。 您的系统具有GPU(Nvidia。因为AMD尚未运行) 您已经安装了Tenso

  • 我正在运行一个Keras模型,提交截止日期为36小时,如果我在cpu上训练我的模型,大约需要50小时,有没有办法在gpu上运行Keras? 我正在使用Tensorflow后端并在我的Jupyter笔记本上运行它,而没有安装anaconda。