Идея использования «образцов» заключается в том, что эти образцы должны быть уникальными и не иметь отношения друг к другу.
Это то, что 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
включает первое измерение (размер партии). Здесь вы должны помнить предупреждение выше: где-то вам нужно будет отменить этоизменить, так что вы получите тот же размер пакета, что и вход.