Я пытаюсь обучить LSTM для доноров. Выберите набор данных, и для этого я использую API Keras. Но когда я запускаю ячейку с архитектурой, она выдает ошибку атрибута. Я знаю, что эта ошибка из-за того, что некоторые старые функции были удалены из tenorflow 2.x. Я также сделал
tf.disable_v2_behavior()
просто чтобы быть уверенным, но я не думаю, что это решит проблему, поскольку именно keras дает мне эту ошибку. Я использовал Sequential для другого проекта CNN, и это сработало. Я очень плохо знаком с глубоким обучением, кера и тензорным потоком, поэтому я не знаю, что мне здесь делать. Вот мой код:
#clearing the graph of tensorflow
tf.keras.backend.clear_session()
#essay part
#input
input_essay = Input(name = 'input_seq_total_text_data', shape=(400,))
#embedidng layer
glove_essay = Embedding(input_dim = vocab_size, output_dim = 100, input_length = 400,
weights = [embedding_matrix] , name = 'Emb_text_data', trainable = False)(input_essay)
#LSTM layer
essay_lstm = LSTM(units = 100, name = 'LSTM essay')(glove_essay)
#flatten layer
flatten_essay = Flatten()(essay_lstm)
#state_part
input_state ,flatten_state = column_layer('School_state', 52, 13, 2)
#project_grade_cat part
input_grade_cat ,flatten_grade_cat = column_layer('project_grade_category', 10, 2, 2)
#clean_categories
input_clean_cat ,flatten_clean_cat = column_layer('clean_categories', 16, 4, 2)
#clean_subcategories
input_clean_subcat ,flatten_clean_subcat = column_layer('clean_subcategories', 16, 4, 2)
#teacher prefix
input_prefix ,flatten_prefix = column_layer('teacher_prefix', 6, 1, 2)
#concatenating all the layers
concat_layer = concatenate(inputs = [flatten_essay,
flatten_state,
flatten_grade_cat,
flatten_clean_cat,
flatten_clean_subcat,
flatten_prefix], name = 'Concat')
#Dense layer
dense_a = Dense(units = 64, activation = 'relu', kernel_initializer= 'he_uniform', name = 'dense 1')(concat_layer)
#dropout with 30% dropout rate
dropout_a = Dropout(rate = 0.3)
dense_b = Dense(units = 32, activation = 'relu', kernel_initializer= 'he_uniform', name = 'dense 2')(dropout_a)
#final softmax layer
output = Dense(units = 1, activation = 'sigmoid')(dense_b)
#initializing the model
model = Model(inputs = [input_essay, input_state, input_grade_catinput_clean_cat, input_clean_subcat, input_prefix], output = output )
И это ошибка, которую я получаю
AttributeError Traceback (most recent call last)
<ipython-input-28-db20bfcd7b2c> in <module>
4 #essay part
5 #input
----> 6 input_essay = Input(name = 'input_seq_total_text_data', shape=(400,))
7 #embedidng layer
8 glove_essay = Embedding(input_dim = vocab_size, output_dim = 100, input_length = 400,
~/anaconda3/envs/deep_learning/lib/python3.7/site-packages/keras/engine/input_layer.py in Input(shape, batch_shape, name, dtype, sparse, tensor)
176 name=name, dtype=dtype,
177 sparse=sparse,
--> 178 input_tensor=tensor)
179 # Return tensor including _keras_shape and _keras_history.
180 # Note that in this case train_output and test_output are the same pointer.
~/anaconda3/envs/deep_learning/lib/python3.7/site-packages/keras/legacy/interfaces.py in wrapper(*args, **kwargs)
89 warnings.warn('Update your `' + object_name + '` call to the ' +
90 'Keras 2 API: ' + signature, stacklevel=2)
---> 91 return func(*args, **kwargs)
92 wrapper._original_function = func
93 return wrapper
~/anaconda3/envs/deep_learning/lib/python3.7/site-packages/keras/engine/input_layer.py in __init__(self, input_shape, batch_size, batch_input_shape, dtype, input_tensor, sparse, name)
85 dtype=dtype,
86 sparse=self.sparse,
---> 87 name=self.name)
88 else:
89 self.is_placeholder = False
~/anaconda3/envs/deep_learning/lib/python3.7/site-packages/keras/backend/tensorflow_backend.py in placeholder(shape, ndim, dtype, sparse, name)
515 x = tf.sparse_placeholder(dtype, shape=shape, name=name)
516 else:
--> 517 x = tf.placeholder(dtype, shape=shape, name=name)
518 x._keras_shape = shape
519 x._uses_learning_phase = False
AttributeError: module 'tensorflow' has no attribute 'placeholder'
Я застрял здесь без понятия о том, что я должен делать. Так что любая помощь будет оценена.
Спасибо