#python #tensorflow #machine-learning #elephas
#python #tensorflow #машинное обучение #elephas
Вопрос:
Я использую Tensorflow 2.3 и пытаюсь инициализировать следующий LSTM
from keras.layers import Dense, Activation,Input, LSTM, Dropout
from keras.optimizers import Adam
from keras.models import Model, Sequential
def create_model() -> Model:
"""
Create the Deep Learning model
:return the created model
"""
input_student = Input(shape=(360,97,), dtype='float')
lstm = LSTM(
units=97,
dropout=0.5,
recurrent_dropout=0.5,
return_sequences=False,
return_state=False
)(input_student)
print(lstm)
lstm = Dropout(0.5)(lstm)
output = Dense(1, activation="sigmoid")(lstm)
optim = Adam(lr=0.001)
model = Model(inputs=input_student, outputs=output)
model.compile(
loss="binary_crossentropy", optimizer=optim
)
model.summary()
return model
Если я пытаюсь использовать Elephas для обучения сети, я получаю следующую ошибку
>>> Fit model
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-18-fcce77bcaaa0> in <module>()
----> 1 spark_model.fit(rdd, epochs=5, batch_size=32, verbose=1, validation_split=0.3)
7 frames
/usr/local/lib/python3.6/dist-packages/elephas/spark_model.py in fit(self, rdd, epochs, batch_size, verbose, validation_split)
149
150 if self.mode in ['asynchronous', 'synchronous', 'hogwild']:
--> 151 self._fit(rdd, epochs, batch_size, verbose, validation_split)
152 else:
153 raise ValueError(
/usr/local/lib/python3.6/dist-packages/elephas/spark_model.py in _fit(self, rdd, epochs, batch_size, verbose, validation_split)
159 self._master_network.compile(optimizer=self.master_optimizer,
160 loss=self.master_loss,
--> 161 metrics=self.master_metrics)
162 if self.mode in ['asynchronous', 'hogwild']:
163 self.start_server()
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py in compile(self, optimizer, loss, metrics, loss_weights, weighted_metrics, run_eagerly, **kwargs)
539 self._run_eagerly = run_eagerly
540
--> 541 self.optimizer = self._get_optimizer(optimizer)
542 self.compiled_loss = compile_utils.LossesContainer(
543 loss, loss_weights, output_names=self.output_names)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py in _get_optimizer(self, optimizer)
565 return opt
566
--> 567 return nest.map_structure(_get_single_optimizer, optimizer)
568
569 @trackable.no_automatic_dependency_tracking
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/nest.py in map_structure(func, *structure, **kwargs)
633
634 return pack_sequence_as(
--> 635 structure[0], [func(*x) for x in entries],
636 expand_composites=expand_composites)
637
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/nest.py in <listcomp>(.0)
633
634 return pack_sequence_as(
--> 635 structure[0], [func(*x) for x in entries],
636 expand_composites=expand_composites)
637
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py in _get_single_optimizer(opt)
559
560 def _get_single_optimizer(opt):
--> 561 opt = optimizers.get(opt)
562 if (self._dtype_policy.loss_scale is not None and
563 not isinstance(opt, lso.LossScaleOptimizer)):
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/optimizers.py in get(identifier)
901 else:
902 raise ValueError(
--> 903 'Could not interpret optimizer identifier: {}'.format(identifier))
ValueError: Could not interpret optimizer identifier: False
Но я не могу понять, что происходит, поскольку я использую импорт не из Keras, а из Tensorflow, как указано в других ответах здесь, на SO.
Кто-нибудь может мне помочь?
Комментарии:
1. Код в вашем вопросе, похоже, совершенно не связан с ошибкой, все начинается в spark_model.fit (rdd, epochs = 5, batch_size= 32, verbose = 1, validation_split = 0.3), где оптимизатор поступает из self.master_optimizer, поэтому вам придется предоставить дополнительную информацию, чтобы помочь вам
Ответ №1:
Я попытался воспроизвести проблему в последней версии 1.0.0 с помощью Tensorflow 2.3.0:https://github.com/danielenricocahall/elephas/releases/tag/1.0.0 и я не смог. Elephas не был полностью совместим с Tensorflow 2.x API до этого выпуска, поэтому я бы рекомендовал повторить попытку.