Ошибка в модели keras для модели классификации с трансформаторами

#tensorflow #keras #deep-learning #neural-network #classification

#tensorflow #keras #глубокое обучение #нейронная сеть #классификация

Вопрос:

Я следовал этому руководству: https://keras.io/examples/timeseries/timeseries_transformer_classification / Для модели классификации с преобразованиями в мои временные ряды. Однако в строке:

 x = layers.MultiHeadAttention(
            key_dim=head_size, num_heads=num_heads, dropout=dropout
        )(x, x)
 

Я получаю ошибку:

 {IndexError}tuple index out of range
 

Есть идеи, почему?

Комментарии:

1. @okuoub Возможно ли предоставить некоторые фиктивные данные, которые могут воспроизвести вашу вышеуказанную ошибку?

2. @M.Innat Это тот же код из учебника, поэтому данные берутся из root_url = » raw.githubusercontent.com/hfawaz/cd-diagram/master/FordA » , но я думаю, что это не имеет значения, поскольку ошибка заключается в построении архитектуры — до подгонки

3. @okuoub можете ли вы запустить приведенный выше официальный пример кода?

4. @M.Innat Нет, когда я вставляю его в свой pycharm, я получаю указанную выше ошибку

5. Этот вопрос — шутка в его текущем состоянии. Воспроизвести это невозможно.

Ответ №1:

Раскрытие информации: я пришел сюда за наградой, затем я попробовал Colab, и все работало нормально..

введите описание изображения здесь

Далее я читаю комментарии: «Этот вопрос — шутка в его текущем состоянии. Воспроизвести это невозможно «. и на данный момент я согласен. Но поскольку мне повезло, и, очевидно, мне приходится много времени откладывать, я запустил Pycharm, следуя подсказке OPs: «Нет, когда я вставляю его в свой pycharm, я получаю указанную выше ошибку»

Но это также сработало для меня, что заставляет меня задуматься, коснулись ли вы чего-то, поэтому я рад предоставить (n) (нетронутую) рабочую версию для вас..

 import numpy as np

def readucr(filename):
    data = np.loadtxt(filename, delimiter="t")
    y = data[:, 0]
    x = data[:, 1:]
    return x, y.astype(int)


root_url = "https://raw.githubusercontent.com/hfawaz/cd-diagram/master/FordA/"

x_train, y_train = readucr(root_url   "FordA_TRAIN.tsv")
x_test, y_test = readucr(root_url   "FordA_TEST.tsv")

x_train = x_train.reshape((x_train.shape[0], x_train.shape[1], 1))
x_test = x_test.reshape((x_test.shape[0], x_test.shape[1], 1))

n_classes = len(np.unique(y_train))

idx = np.random.permutation(len(x_train))
x_train = x_train[idx]
y_train = y_train[idx]

y_train[y_train == -1] = 0
y_test[y_test == -1] = 0


from tensorflow import keras
from tensorflow.keras import layers

def transformer_encoder(inputs, head_size, num_heads, ff_dim, dropout=0):
    # Normalization and Attention
    x = layers.LayerNormalization(epsilon=1e-6)(inputs)
    x = layers.MultiHeadAttention(
        key_dim=head_size, num_heads=num_heads, dropout=dropout
    )(x, x)
    x = layers.Dropout(dropout)(x)
    res = x   inputs

    # Feed Forward Part
    x = layers.LayerNormalization(epsilon=1e-6)(res)
    x = layers.Conv1D(filters=ff_dim, kernel_size=1, activation="relu")(x)
    x = layers.Dropout(dropout)(x)
    x = layers.Conv1D(filters=inputs.shape[-1], kernel_size=1)(x)
    return x   res
 

Также, чтобы убедиться, что мы говорим об одних и тех же версиях пакетов

Я использовал numpy (1.21.2) и tensorflow (2.6.0) — попробуйте использовать эти версии или дайте мне знать, если вы использовали разные версии.