gpt4 book ai didi

python - 如何处理 Keras 中超长的卷积序列内存大小?

转载 作者:太空宇宙 更新时间:2023-11-03 15:47:07 25 4
gpt4 key购买 nike

我相信这是一个独特的问题,但如果存在的话,一定要将我链接到其他地方的其他答案。我在 Keras 中有一个卷积顺序网络,与 guide to the sequential model (and here is their model): 中的非常相似

from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.layers import Embedding
from keras.layers import Conv1D, GlobalAveragePooling1D, MaxPooling1D

model = Sequential()
model.add(Conv1D(64, 3, activation='relu', input_shape=(seq_length, 100)))
model.add(Conv1D(64, 3, activation='relu'))
model.add(MaxPooling1D(3))
model.add(Conv1D(128, 3, activation='relu'))
model.add(Conv1D(128, 3, activation='relu'))
model.add(GlobalAveragePooling1D())
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])

model.fit(x_train, y_train, batch_size=16, epochs=10)
score = model.evaluate(x_test, y_test, batch_size=16)

不幸的是,我的序列大小非常大(高达一百万),我真的很想做一个嵌入。有了这个,我想做二维卷积(可能还有更深的架构)。我的 GPU 运行速度足够快,因为卷积很容易,但它有 2GB 的内存。因此,我什至不能一次训练一个样本的网络。一旦我引入嵌入,网络的大小就会爆炸 - 在这个例子中,(batch_size, 1000000, 100, embed_size)。

我知道 fit_generator ,但使用 fit_generator(和 TimeSeriesGenerator)要求我为序列的分解时间步长的每一步都有一个标签。我的问题是一个简单的分类问题,因此在例如序列的前 1000 个时间步之后与所有百万相比提供标签是没有意义的。我的印象是网络可能正在为分解序列的每个部分运行 GlobalAveragePooling。作为证明,当我在小型数据集上运行 fit_generator 与 regular_fit 相比时,fit_generator 的性能受到很大影响。

因此我的问题是:我可以使用什么来创建大型网络以在 Keras 中运行超长序列?有没有可能我误解了 fit_generator?还是有其他方法可以将长序列分解成多个部分?如果这绝对不存在,我可能可以自己编写并提交给 Keras,但我宁愿不这样做。

这不像具有极长序列长度的 LSTM,因为我不关心 TBTT,并且卷积网络没有状态。

最佳答案

你有一系列句子,嵌入一次只能应用于一个句子,所以你需要将它包裹在一个 TimeDistributed 层中

from keras.models import Sequential
from keras.layers import Embedding, TimeDistributed

# plug-in your own values
vocab_size = 10000
embed_size = 200
seq_length = 1000000

model = Sequential()
model.add(TimeDistributed(Embedding(vocab_size, embed_size),
input_shape=(seq_length, 100)))

上面给了我 (None, 1000000, 100) 的 input_shape 和 (None, 1000000, 100, 200) 的输出形状,有 200 万个参数.

关于python - 如何处理 Keras 中超长的卷积序列内存大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49391386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com