Ошибка: "DimensionMismatch (" матрица A имеет размеры (1024,10), вектор B имеет длину 9 ")" с использованием Flux в Юлии - PullRequest
2 голосов
/ 28 сентября 2019

Я все еще новичок в Юлии и в машинном обучении в целом, но я очень хочу учиться.В текущем проекте, над которым я работаю, у меня проблема с несоответствием размеров, и я не могу понять, что делать.

У меня есть два массива следующим образом:

x_array: 
9-element Array{Array{Int64,N} where N,1}:
 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 72, 73]
 [11, 12, 13, 14, 15, 16, 17, 72, 73]
 [18, 12, 19, 20, 21, 22, 72, 74]
 [23, 24, 12, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 72, 74]
 [36, 37, 38, 39, 40, 38, 41, 42, 72, 73]
 [43, 44, 45, 46, 47, 48, 72, 74]
 [49, 50, 51, 52, 14, 53, 72, 74]
 [54, 55, 41, 56, 57, 58, 59, 60, 61, 62, 63, 62, 64, 72, 74]
 [65, 66, 67, 68, 32, 69, 70, 71, 72, 74]


y_array:
9-element Array{Int64,1}
 75
 76
 77
 78
 79
 80
 81
 82
 83

иследующая модель с использованием Flux:

model = Chain(
    LSTM(10, 256),
    LSTM(256, 128),
    LSTM(128, 128),
    Dense(128, 9),
    softmax
)

Я заархивирую оба массива, а затем передам их в модель с помощью Flux.train!

data = zip(x_array, y_array)
Flux.train!(loss, Flux.params(model), data, opt)

и сразу же выдаст следующую ошибку:

ERROR: DimensionMismatch("matrix A has dimensions (1024,10), vector B has length 9")

Теперь я знаю, что первое измерение матрицы A - это сумма скрытых слоев (256 + 256 + 128 + 128 + 128 + 128), а второе измерение - входной слой, равный 10.Первым делом я изменил 10 на 9, но потом выдает только ошибку:

ERROR: DimensionMismatch("dimensions must match")

Может кто-нибудь объяснить мне, какие измерения не соответствуют друг другу и как их сопоставить?

...