Как сделать измерения совместимыми между TCN в пространстве и LSTM во времени?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать измерения совместимыми между TCN в пространстве и LSTM во времени?

Сообщение Anonymous »

Я хотел бы создать модель с TCN, за которой следует LSTM. Мне трудно понять, как использовать размеры каждого имеющегося у меня слоя.
мои данные можно просматривать в 3D с помощью (времени, пространства, объектов). время может варьироваться и установлено на «Нет», пространство фиксировано на 257, а функции равны 1.
вход TCN тогда (Нет, 257, 1), а выход равно (Нет, 257, 64), потому что я извлекаю 64 объекта.
LSTM в keras равен (выборки, временные шаги и функции), тогда он не соответствует выводу моего TCN слой (время, пространство, функции).
Мой вопрос: как я могу переформатировать свои измерения, чтобы они были совместимы как TCN, так и LSTM. TCN следует применять в пространственном измерении, а LSTM — в измерении времени.
Для этого я сначала сглаживаю выходные данные TCN с помощью команды Give Dims (Нет, 257x64), затем разверните измерение, чтобы получить 3D (как и должно быть на входе LSTM) dims = (1, None, 257x64).
Затем я применяю слой LSTM и удаляю добавленное измерение чтобы получить правильный вывод для моих меток (Время, Функции) = (Нет, Функции)
Это правильно? или я что-то делаю неправильно?
Вот модель, которую я сделал на данный момент:
import tensorflow as tf
from tcn2 import TCN

SpaceDim = 257
Time = None
Data = [Time,SpaceDim,1]

ip = tf.keras.layers.Input(shape=(SpaceDim, 1))

TCN0 = TCN(nb_filters=64, kernel_size=3, nb_stacks=1,
dilations=(1, 2, 4, 8, 16), activation='linear', return_sequences=True, name='tcn0')(ip)

TCN0 = tf.keras.layers.Dropout(0.3)(TCN0)
TCN0_f = tf.keras.layers.Flatten()(TCN0)
TCN1 = tf.keras.backend.expand_dims(TCN0_f, 0)

LSTM0 = tf.keras.layers.LSTM(258, return_sequences=True)(TCN1)
LSTM1 = tf.keras.backend.squeeze(LSTM0, 0)

out = tf.keras.layers.Dense(15003)(LSTM1)
model = tf.keras.models.Model(ip, out)

Adamp = tf.keras.optimizers.Adam(learning_rate=0.00001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0,
amsgrad=True)

model.compile(loss='mse', optimizer=Adamp, metrics=['mse', 'mae'])
model.summary()

Резюме дает следующее:
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_3 (InputLayer) [(None, 257, 1)] 0

tcn0 (TCN) (None, 257, 64) 111552

dropout_2 (Dropout) (None, 257, 64) 0

flatten_3 (Flatten) (None, 16448) 0

tf.expand_dims_3 (TFOpLambd (1, None, 16448) 0
a)

lstm_1 (LSTM) (1, None, 258) 17241624

tf.compat.v1.squeeze_1 (TFO (None, 258) 0
pLambda)

dense (Dense) (None, 15003) 3885777

=================================================================
Total params: 21,238,953
Trainable params: 21,238,953
Non-trainable params: 0
_________________________________________________________________


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

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

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

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

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

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

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