Я пытался преобразовать код PyTorch для заполнения партии в Keras. Это код для многомодального анализа тональности в базе данных CMU-MOSI. Мне в основном нужно преобразовать весь исходный код https://github.com/Justin1904/CMU-MultimodalSDK-Tutorials в Keras, и поскольку я новичок в этом, для меня это борьба. Был бы очень признателен за помощь и руководство. Сразу же мне нужно дополнить все векторы функций, чтобы они были одинаковой длины друг с другом: visual, acousti c, предложения и метки.
Здесь они сделали это пакетно, сделав это на весь набор данных или разбиение набора данных также будут работать. Нужна вся возможная помощь.
*Mine(Keras)*
def multi_collate(batch):
'''
Collate functions assume batch = [Dataset[i] for i in index_set]
'''
# for later use we sort the batch in descending order of length
batch = sorted(batch, key=lambda x: x[0][0].shape[0], reverse=True)
# get the data out of the batch - use pad sequence util functions from PyTorch to pad things
labels = np.array([sample[1] for sample in batch])
sentences = tf.keras.preprocessing.sequence.pad_sequences([sample[0][0] for sample in batch], padding=PAD)
visual = tf.keras.preprocessing.sequence.pad_sequences([sample[0][1] for sample in batch])
acoustic = tf.keras.preprocessing.sequence.pad_sequences([sample[0][2] for sample in batch])
# lengths are useful later in using RNNs
lengths = np.array([sample[0][0].shape[0] for sample in batch])
return sentences, visual, acoustic, labels, lengths
*Original (PyTorch)*
def multi_collate(batch):
'''
Collate functions assume batch = [Dataset[i] for i in index_set]
'''
# for later use we sort the batch in descending order of length
batch = sorted(batch, key=lambda x: x[0][0].shape[0], reverse=True)
# get the data out of the batch - use pad sequence util functions from PyTorch to pad things
labels = torch.cat([torch.from_numpy(sample[1]) for sample in batch], dim=0)
sentences = pad_sequence([torch.LongTensor(sample[0][0]) for sample in batch], padding_value=PAD)
visual = pad_sequence([torch.FloatTensor(sample[0][1]) for sample in batch])
acoustic = pad_sequence([torch.FloatTensor(sample[0][2]) for sample in batch])
# lengths are useful later in using RNNs
lengths = torch.LongTensor([sample[0][0].shape[0] for sample in batch])
return sentences, visual, acoustic, labels, lengths