При использовании SimpleRNN
или LSTM
для классического алгоритма анализа настроений алгоритмов (применяется здесь к предложениям длиной <= 250 слов / токенов): </p>
model = Sequential()
model.add(Embedding(5000, 32, input_length=250)) # Output shape: (None, 250, 32)
model.add(SimpleRNN(100)) # Output shape: (None, 100)
model.add(Dense(1, activation='sigmoid')) # Output shape: (None, 1)
где указано, какая ось ввода RNN используется в качестве «временной» оси?
Чтобы быть более точным, после слоя Embedding
заданное входное предложение, например «кот сидел на коврике» , кодируется в матрицу x
формы (250, 32), где 250 - максимальная длина (в словах) входного текста, а 32 - размерность вложение. Затем, где в Керасе указано, будет ли это использоваться:
h[t] = activation( W_h * x[:, t] + U_h * h[t-1] + b_h )
или это:
h[t] = activation( W_h * x[t, :] + U_h * h[t-1] + b_h )
(В обоих случаях y[t] = activation( W_y * h[t] + b_y )
)
TL; DR: если вход для слоя RNN Keras имеет размер, скажем, (250, 32), какую ось он использует в качестве временной оси по умолчанию? Где это подробно описано в документации Keras или Tensorflow?
PS: как объяснить количество параметров (заданных model.summary()
), которое составляет 13300? W_h
имеет 100x32 кофа, U_h
имеет 100x100 кофа, b_h
имеет 100x1 кофа, то есть у нас уже есть 13300! Не осталось ни одного кофта для W_y
и b_y
! Как это объяснить?