Как получить множественный прогноз для simpleRNN

В общем моя система такая

  • 4 входа массива и возврат 1 выход массива
  • каждый массив состоит из 12 чисел

моя модель ниже

n_hidden = 512
input_shape = 12
input_len = 4 
model = Sequential()

model.add(SimpleRNN(n_hidden, input_shape=(input_len, input_shape), return_sequences=False))
model.add(Dense(n_hidden, activation = "linear")) 
model.add(Dense(input_shape, activation = "linear"))
opt = Adam(lr=0.001)
model.compile(loss='mse', optimizer=opt)
model.summary()

код предсказания.

in_ = basicdata[0].x[:1]
# in_.shape =  (1,4,12)

predicted = []
NUM_DATA = 100
cnt = 0
for i in range(NUM_DATA):
    out_ = model.predict(in_)  
    #it returns only 1 answer.
    #out_.shape = (1, 12) 

    in_ = np.concatenate((in_.reshape(input_shape, input_len)[1:], out_), axis=0).reshape(1, input_shape,input_len) 
    if cnt == 0:
        predicted = out_
    else:
        predicted = np.concatenate([predicted,out_],axis=0)
    cnt = cnt + 1

В этом случае model.predict принимает (1,4,12) и возвращает один массив (1, 12), но Я хочу получить (10,12) несколько кандидатов для выборки.

Я предполагаю, что return_sequences и batch_size в simpleRNN связаны, но все еще расплывчаты.

В моем понимании.

  • return_sequences

return_sequences = False

А,В,С,D => (Е)

return_sequences = True

А,В,С,D => (А,В,С,D,Е)

Я хочу, чтобы это было ниже

А,В,С,D => (Е1,Е2,Е3,Е4,Е5)

  • batch_size

batch_size влияет на форму ввода,

Я хочу изменить вывод.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Некоторые методы, о которых вы не знали, что они существуют в Python.
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

return_sequences = False (классификатор последовательности):

А,В,С,D => (Е)

return_sequences = True (классификатор элементов последовательности):

А,В,С,D => (А1,В1,С1,D1)

Если ваша модель была обучена предсказывать следующий символ, то:

А,В,С,D => (В,С,D,Е)

Можно создать модель такого вида:

А,В,С,D => (Е1,Е2,Е3,Е4,Е5)

Это модели seq2seq (например, для перевода, когда длина ввода отличается от длины вывода). Вам нужно создать два RNN: кодировщик и декодер. Насколько я понимаю, это не то, что вы хотите.

batch_size является параметром обучения и используется для реализации стохастического градиентного спуска.

Большое спасибо за четкое объяснение. Я мог неправильно понять некоторые моменты. А также на следующем этапе мне нужно научиться seq2seq.

whitebear 22.12.2020 11:30

Другие вопросы по теме