Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 它';如果在anaconda提示符下运行,则为OK,但ModuleNotFoundError:没有名为';克拉斯';在斯派德_Python_Tensorflow_Keras_Spyder - Fatal编程技术网

Python 它';如果在anaconda提示符下运行,则为OK,但ModuleNotFoundError:没有名为';克拉斯';在斯派德

Python 它';如果在anaconda提示符下运行,则为OK,但ModuleNotFoundError:没有名为';克拉斯';在斯派德,python,tensorflow,keras,spyder,Python,Tensorflow,Keras,Spyder,我运行从下载的项目。 奇怪的是,如果我在anaconda提示符中运行它,它是正常的,但是如果我在Spyder中运行它,它就会出现(我在win10中安装了anaconda和Sypder,也安装了keras): 运行文件('E:/MySourceCode/neural\u image\u captiting-master-oarriaga/src/train.py', wdir='E:/MySourceCode/neural\u image\u caption-master-oarriaga/src

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

运行文件('E:/MySourceCode/neural\u image\u captiting-master-oarriaga/src/train.py', wdir='E:/MySourceCode/neural\u image\u caption-master-oarriaga/src') 重新加载的模块:evaluator、生成器回溯(最近调用 最后):

文件“”,第1行,在 运行文件('E:/MySourceCode/neural\u image\u captiting-master-oarriaga/src/train.py', wdir='E:/MySourceCode/neural\u image\u caption-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(编译(f.read(),文件名,'exec'),命名空间)

文件 “E:/MySourceCode/neural\u image\u capoting-master-oarriaga/src/train.py”, 第3行,在 从keras.callbacks导入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提示符下,pip keras在“激活tensorflow”之前和“激活tensorflow”之后是否有任何区别?非常感谢。

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

$ conda install keras
但它不起作用,我建议卸载它,然后用pip3重新安装:

$ conda uninstall keras
$ sudo pip3 install keras
您可以通过在Spyder中导入keras来检查它是否有效:

> import keras

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

$ conda install keras
但它不起作用,我建议卸载它,然后用pip3重新安装:

$ conda uninstall keras
$ sudo pip3 install keras
您可以通过在Spyder中导入keras来检查它是否有效:

> import keras

如果您使用的是conda,那么最好尽可能使用conda安装所有内容,而不是将其与pip混用

conda的目的是,您可以创建多个环境,每个环境安装了不同的软件包,或同一软件包的不同版本,而不会导致冲突,因为一次只激活一个环境。这些包包括Python本身和Spyder。因此,要将Python模块与Spyder一起使用,您需要创建一个包含模块和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 create
创建新环境,然后激活它),那么您最好卸载Anaconda并从头开始。如果有任何问题让人困惑,我建议您重新阅读。

如果您使用的是conda,那么最好尽可能使用conda安装所有内容,而不是将其与pip混淆

conda的目的是,您可以创建多个环境,每个环境安装了不同的软件包,或同一软件包的不同版本,而不会导致冲突,因为一次只激活一个环境。这些包包括Python本身和Spyder。因此,要将Python模块与Spyder一起使用,您需要创建一个包含模块和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 create
创建新环境,然后激活它),那么您最好卸载Anaconda并从头开始。如果有任何问题让人困惑,我建议重新阅读。

错误可能是您使用了错误的环境。在anaconda navigator中,在启动spyder之前,请确保您处于正确的环境中。错误可能是您使用了错误的环境。在anaconda navigator中,在启动spyder之前确保您处于正确的环境中

我尝试运行此程序,但找不到模块计算器或生成器。你们从哪里得到的?我是从哪里得到的:我试着运行这个,但找不到模块计算器或生成器。你从哪里得到的?我是从:谢谢你回答我的帖子,但我还有两个问题。在anoconda提示符下,pip keras在“激活tensorflow”之前和“激活tensorflow”之后是否有任何区别?我安装了anaconda,anaconda集成了Spyder。我在Spyder控制台中尝试了“导入keras”,它的响应是“没有名为keras的模块”。但我在anaconda提示符中的“激活tensorflow”之后尝试了“pip列表”,我可以看到keras已经存在。顺便说一下,在“激活tensorflow”之前,我看不到它。在anaconda提示符中重新安装keras?我已经尝试过卸载和重新安装它,但是仍然在Spyder中遇到同样的错误。谢谢你回答我的问题,但是我还有两个问题。在anoconda提示符下,pip keras在“激活tensorflow”之前和