Маски для внимания в отношении данных временных рядов с керас -фанкционированным APIPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Маски для внимания в отношении данных временных рядов с керас -фанкционированным API

Сообщение Anonymous »

В настоящее время я пытаюсь изучить влияние маскировки внимания на модель трансформатора, обученную классификации данных временных рядов. Моя модель работает до сих пор и дает мне производительность Okish, но когда я пытаюсь замаскировать внимание всех слоев мультиголовства в моей модели, производительность остается прежней, что вполне не то, что я ожидаю.
Моя модель (на основе учебника Keras): < /p>

Код: Выделить всё

def build(params: dict, input_shape:tuple) -> keras.Model:

#input_dim = 1
sequence_size = params["sequence_size"]
n_classes = params["n_classes"]
encoder_blocks = params["encoder_blocks"]
n_heads = params["encoder_heads"]
encolder_mlp = params["mlp_dim"]
conv_filters = params["conv_filters"]
encoder_dropout = params["encoder_dropout"]
mlp_dropout = params["mlp_dropout"]
learning_rate = params["learning_rate"]

inputs = keras.Input(shape=input_shape, name="sequence_input")
mask = keras.Input(shape=(sequence_size, sequence_size), name="mask_input")

x = inputs + SinePositionEncoding()(inputs)

for _ in range(encoder_blocks):
x = transformer_encoder(x, head_size=sequence_size, num_heads=n_heads, con_filters=conv_filters, attention_mask=mask, dropout=encoder_dropout, seed=SEED)
#x, _ = EncoderLayer(d_model=n_heads*5, num_heads= n_heads, dff=conv_filters, rate=encoder_dropout)(x, mask=mask)

x = layers.GlobalAveragePooling1D(data_format="channels_last")(x)
x = layers.Dense(encolder_mlp, activation="relu")(x)
x = layers.Dropout(mlp_dropout, seed=SEED)(x)

outputs = layers.Dense(n_classes, activation="softmax")(x)

model =  keras.Model(inputs=[inputs, mask], outputs=outputs)

model.compile(
loss="categorical_crossentropy",
optimizer=keras.optimizers.Adam(learning_rate=learning_rate),
metrics=["categorical_accuracy", "f1_score"],
run_eagerly=False
)

return model

с моим трансформатором_кодером

Код: Выделить всё

def transformer_encoder(inputs:np.ndarray, head_size:int, num_heads:int, con_filters:int, attention_mask, dropout=0, seed=42):

x, att = layers.MultiHeadAttention(
key_dim=head_size, num_heads=num_heads, dropout=dropout, seed=seed)(inputs, inputs, attention_mask=tf.ones((sequence_size, sequence_size), dtype=bool), return_attention_scores=True ,training=True)
tf.print(att)
#print(f"output: {x}")
#x, _ = MultiHeadAttention(d_model=num_heads*5, num_heads=num_heads)(inputs, inputs, inputs, attention_mask)
print(x)
x = layers.Dropout(dropout, seed=seed)(x)
x = layers.LayerNormalization(epsilon=1e-6)(x)
res = x + inputs

x = layers.Conv1D(filters=con_filters, kernel_size=1, activation="relu")(res)
x = layers.Dropout(dropout, seed=seed)(x)
x = layers.Conv1D(filters=inputs.shape[-1], kernel_size=1)(x)
x = layers.LayerNormalization(epsilon=1e-6)(x)

return x + res
До сих пор я пытался передать маску с каждым вводом и маскируя все внимание с tf.zeros ((sequence_size, sequence_size), dytpe = bool . Я также Пытался изменить форму масок, но не повезло.
Кто -нибудь, кто знает ответ?

Подробнее здесь: https://stackoverflow.com/questions/794 ... tional-api
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»