Ошибка при генерации измерения встраивания универсального кодировщика предложений

#scikit-learn #tensorflow2.0 #pca #embedding #encoder-decoder

#scikit-учиться #tensorflow2.0 #спс #встраивание #кодировщик-декодер

Вопрос:

Ниже приведен код для генерации встраивания и уменьшения размера:

 def generate_embeddings(text):
    if embed_fn is None:
        embed_fn = hub.load(module_url)
    embedding = embed_fn(text).numpy()
    return embedding


from sklearn.decomposition import IncrementalPCA
def pca():
    pca = IncrementalPCA(n_components = 64, batch_size= 1024)
    pca.fit(generate_embeddings(df))
    features_train = pca.transform(generate_embeddings(df))
    return features_train
 

Когда я запускаю 100 000 записей, он выдает ошибку:

 ResourceExhaustedError:  OOM when allocating tensor with shape[64338902,512] and type float on /job:localhost/replica:0/task:0/device:CPU:0 by allocator cpu
     [[{{node StatefulPartitionedCall/StatefulPartitionedCall/EncoderDNN/EmbeddingLookup/EmbeddingLookupUnique/GatherV2}}]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.
 [Op:__inference_restored_function_body_15375]

Function call stack:
restored_function_body

 

Ответ №1:

Это показывает ваше ограничение памяти графического процессора. Либо уменьшите batch_size , либо уменьшите размер network layers .

Ответ №2:

Поскольку объем данных превышает объем системной памяти и не может загружаться за один раз, поэтому передавайте их порциями или пакетами.Одновременно в память будут загружаться только пакетные данные.

 def generate_embeddings(text):   
    embed_fn = hub.load(module_url)
    embedding = embed_fn(text).numpy()
    return embedding

def gen_pca(batch):
    gen=generate_embeddings(batch)
    pca = PCA(n_components = 64)
    pca.fit(gen)
    features_train = pca.transform(gen)
    return features_train


def run():
    ex=[]
    for batch in np.array_split(df['text'], 100):
        ex.extend(gen_pca(batch))
    return ex