Я запускаю проект, скачанный с GitHub .
Странно, если я запускаю его в приглашении anaconda, все в порядке, но если я запускаю его в Spyder, он появляется (я установил anaconda и Sypder в win10, а также keras):
runfile ( 'E: /MySourceCode/neural_image_captioning-master-oarriaga/src/train.py',
wdir = 'Е: / MySourceCode / neural_image_captioning-мастер-oarriaga / SRC')
Перезагруженные модули: оценщик, генератор Traceback (самый последний вызов
последний):
Файл "", строка 1, в
runfile ( 'E: /MySourceCode/neural_image_captioning-master-oarriaga/src/train.py',
wdir = 'Е: / MySourceCode / neural_image_captioning-мастер-oarriaga / SRC')
Файл
"D: \ ProgramData \ Anaconda3 \ Lib \ сайт-пакеты \ Spyder \ Utils \ сайт \ sitecustomize.py",
строка 710, в runfile
execfile (имя файла, пространство имен)
Файл
"D: \ ProgramData \ Anaconda3 \ Lib \ сайт-пакеты \ Spyder \ Utils \ сайт \ sitecustomize.py",
строка 101, в execfile
exec (compile (f.read (), filename, 'exec'), пространство имен)
Файл
"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, есть ли какая-то разница, пока pip keras перед "активировать tenorflow" и после "активировать tenorflow"? Большое спасибо.