Как изменить форму тензора в средних слоях? - PullRequest
0 голосов
/ 07 декабря 2018

Говоря, у меня есть матрица 2000x100, я помещаю ее в 10-слойный слой внедрения, что дает мне тензор 2000x100x10.так что это 2000 примеров, и каждый пример имеет матрицу 100x10.а затем я передаю его в conv1d и KMaxpolling, чтобы получить матрицу 2000x24, то есть 2000 примеров, и каждый пример имеет 24-мерный вектор.и теперь я хотел бы объединить эти примеры, прежде чем применять другой слой.Я хотел бы объединить первые 10 примеров и тому подобное, чтобы получить кортеж.и затем я передаю этот кортеж следующему слою.Мой вопрос: могу ли я сделать это с Керасом?а есть идеи как это сделать?

1 Ответ

0 голосов
/ 07 декабря 2018

Идея использования «образцов» заключается в том, что эти образцы должны быть уникальными и не иметь отношения друг к другу.

Это то, что Keras потребует от вашей модели: если она начиналась с 2000 семплов, она должна заканчиваться 2000 семплами.В идеале эти образцы не общаются друг с другом, но вы можете использовать пользовательские слои, чтобы взломать это, но только в середине.В любом случае вам нужно будет закончить 2000 сэмплами.

Я полагаю, что вы закончите свою модель с 200 группами, поэтому, возможно, вам уже следует начинать с формы (200,10,100) и использовать TimeDistributed упаковщики:

inputs = Input((10,100))                       #shape (200,10,100)
out = TimeDistributed(Embedding(....))(inputs) #shape (200,10,100,10)
out = TimeDistributed(Conv1D(...))(out)        #shape (200,10,len,filters)

#here, you use your layer that will work on the groups without TimeDistributed.

Чтобы изменить тензор без изменения размера партии, используйте слой Reshape(newShape), где newShape не включает первое измерение (размер партии).

Чтобы изменить форму тензора, включая размер партии, используйте слой Lambda(lambda x: K.reshape(x,newShape)), где newShape включает первое измерение (размер партии). Здесь вы должны помнить предупреждение выше: где-то вам нужно будет отменить этоизменить, так что вы получите тот же размер пакета, что и вход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...