«Состояние» слоя GRU обычно будет таким же, как «выход». Однако, если вы передадите return_state=True
и return_sequence=True
, то выход слоя будет выводиться после каждого элемента последовательности, а состояние будет только состоянием после обработки последнего элемента последовательности.
Вот пример кодера / декодера для сети seq-2-seq, использующей уровни GRU
#Create layers
encoder_input_layer = Input(shape=(None,))
encoder_embedding_layer = Embedding(len(vocab), THOUGHT_VECTOR_SIZE)
encoder_gru_layer = GRU(THOUGHT_VECTOR_SIZE, return_state=True)
decoder_input_layer = Input(shape=(None,))
decoder_embedding_layer = Embedding(len(vocab), THOUGHT_VECTOR_SIZE)
decoder_gru_layer = GRU(THOUGHT_VECTOR_SIZE, return_sequences=True)
decoder_dense_layer = Dense(len(vocab), activation='softmax')
#connect network
encoder = encoder_embedding_layer(encoder_input_layer)
encoder, encoder_state = encoder_gru_layer(encoder)
decoder = decoder_embedding_layer(decoder_input_layer)
decoder = decoder_gru_layer(decoder, initial_state=encoder_state)
decoder = decoder_dense_layer(decoder)
model = Model([encoder_input_layer, decoder_input_layer], decoder)
Но, с вашей точки зрения, использование return_state
здесь на самом деле не нужно в качестве вывода состояние от encoder_gru_layer будет таким же.
Использование встроенных функций Django и передача именованных параметров было бы самым простым способом.
p = User(name="Fred", email="fred@example.com")
Но если вы настроены на сохранение некоторых нажатий клавиш, я бы предложил добавить статический метод удобства класса вместо того, чтобы возиться с инициализатором.
# In User class declaration
@classmethod
def create(cls, name, email):
return cls(name=name, email=email)
# Use it
p = User.create("Fred", "fred@example.com")
Django ожидает, что сигнатура конструктора модели будет (self, * args, ** kwargs)
или какое-то разумное факсимильное сообщение. Если вы изменили подпись на что-то совершенно несовместимое, она сломалась.