Я пытаюсь изменить существующую модель (учебное пособие TF здесь: https://www.tensorflow.org/alpha/tutorials/text/text_generation), чтобы принять пакетный ввод 3D, а не 2D, но получаю следующую ошибку:
"transpose ожидает вектор размера 4. Но input (1) - это вектор размера 3 [Op: Transpose] name: sequential_65 / cu_dnngru_66 / transpose /"
моя партия в форме (64,100,9)
batch_size = 64
vocab_size = 42
embedding_dim = 256
rnn_units = 1024
model = tf.keras.Sequential([
tf.keras.layers.Embedding(vocab_size, embedding_dim,
batch_input_shape=[batch_size, None]),
rnn(rnn_units,
return_sequences=True,
recurrent_initializer='glorot_uniform',
stateful=True),
tf.keras.layers.Dense(vocab_size)
])
усеченная пакетная печать:
[[[9 1 0 ... 0 0 0]
[31 0 0 ... 0 0 0]
[28 1 0 ... 1 0 0]
...
[ 9 1 0 ... 0 0 0]
[15 1 0 ... 0 1 0]
[25 0 0 ... 0 0 0]]
[[31 0 0 ... 0 0 0]
[6 0 0 ... 0 0 0]
[22 1 1 ... 0 0 0]
...
[15 1 0 ... 0 1 0]
[28 1 0 ... 1 0 0]
[2 0 0 ... 0 0 0]]
[[31 0 0 ... 0 0 0]
[11 0 0 ... 0 0 0]
[9 1 0 ... 0 0 0]
...
[6 0 0 ... 0 0 0]
[36 1 0 ... 0 0 0]
[17 0 0 ... 0 0 0]]
...
[[27 0 1 ... 0 0 0]
[27 0 1 ... 0 0 0]
[2 0 0 ... 0 0 0]
...
[9 1 0 ... 0 0 0]
[12 0 0 ... 0 0 0]
[36 1 0 ... 0 0 0]]
[[37 1 0 ... 0 0 0]
[34 0 0 ... 0 0 0]
[16 0 0 ... 0 0 1]
...
[1 0 0 ... 0 0 0]
[23 1 0 ... 0 0 0]
[22 1 1 ... 0 0 0]]
[[3 0 0 ... 0 0 0]
[10 1 0 ... 0 0 0]
[12 0 0 ... 0 0 0]
...
[27 0 1 ... 0 0 0]
[12 0 0 ... 0 0 0]
[31 0 0 ... 0 0 0]]], shape=(64, 100, 9), dtype=int32)
Вначале я думал, что необходимо изменить batch_input_shape, но из-за обширных проб и ошибок я не смог его решить.
Любая помощь будет принята с благодарностью, спасибо