我正在try 使用Camembert模型来仅提取文本特征.在此之后,我try 使用KNN分类器将特征向量分类为输入.

这是我写的代码

import torch
from transformers import AutoTokenizer, CamembertModel
from sklearn.neighbors import KNeighborsClassifier

tokenizer = AutoTokenizer.from_pretrained("camembert-base")
model = CamembertModel.from_pretrained("camembert-base")

data = df.to_dict(orient='split')
data = dict(zip(data['index'], data['data']))

# Collect all the input texts into a list of strings
input_texts = [str(text) for text in data.values()]

# Tokenize all the input texts together
inputs = tokenizer(input_texts, return_tensors="pt", padding=True, truncation=True)

# Get the model outputs for all the input texts
with torch.no_grad():
    outputs = model(**inputs)

# Extract the last hidden states and convert them to a numpy array
last_hidden_states = outputs.last_hidden_state
input_features = last_hidden_states[:, 0, :].numpy()

# Extract the labels from the data dictionary
input_labels = list(data.keys())

neigh = KNeighborsClassifier(n_neighbors=3)
neigh.fit(input_features, input_labels)

然而,我得到了这个错误

RuntimeError: [enforce fail at ..\c10\core\impl\alloc_cpu.cpp:72] data. DefaultCPUAllocator: not enough memory: you tried to allocate 19209424896 bytes.

我在词典中使用的数据格式如下:

{
    'index': [row_index_1, row_index_2, ...],
    'columns': [column_name_1, column_name_2, ...],
    'data': [
        [cell_value_row_1_col_1, cell_value_row_1_col_2, ...],
        [cell_value_row_2_col_1, cell_value_row_2_col_2, ...],
        ...
    ]
}

推荐答案

看起来您是在一次将所有数据提供给模型,而您没有足够的内存来这样做.而不是这样做,您可以逐句调用模型语句或使用较小的语句批次,以便在可用的系统资源中保留所需的内存.

Python相关问答推荐

我必须将Sigmoid函数与r2值的两种类型的数据集(每种6个数据集)进行匹配,然后绘制匹配函数的求导.我会犯错

使用plotnine和Python构建地块

Python daskValue错误:无法识别的区块管理器dask -必须是以下之一:[]

如何删除索引过go 的lexsort深度可能会影响性能?' &>

输出中带有南的亚麻神经网络

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

通过pandas向每个非空单元格添加子字符串

有没有一种方法可以从python的pussompy比较结果中提取文本?

我想一列Panadas的Rashrame,这是一个URL,我保存为CSV,可以直接点击

从spaCy的句子中提取日期

如何在UserSerializer中添加显式字段?

如何使regex代码只适用于空的目标单元格

使用Python从rotowire中抓取MLB每日阵容

ModuleNotFoundError:没有模块名为x时try 运行我的代码''

如何删除重复的文字翻拍?

将CSS链接到HTML文件的问题

jsonschema日期格式

获取PANDA GROUP BY转换中的组的名称

有没有办法在不先将文件写入内存的情况下做到这一点?

是否需要依赖反转来确保呼叫方和被呼叫方之间的分离?