微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Tensorflow错误:无法找到可以处理输入的数据适配器:<class'scipy.sparse.csr.csr_matrix'>,<class'NoneType'>和内存错误

如何解决Tensorflow错误:无法找到可以处理输入的数据适配器:<class'scipy.sparse.csr.csr_matrix'>,<class'NoneType'>和内存错误

当我尝试使用Tensorflow / Keras为我的数据集测试一些文本分类样本代码时遇到两个错误-https://realpython.com/python-keras-text-classification/

代码在Sklearn模型上运行良好,但是当我将其更改为使用Tensorflow / Keras时,会遇到这些错误

警告和错误

(1)警告:tensorflow:由于错误而从v2循环回退:无法找到可以处理输入的数据适配器: (2)MemoryError:无法为形状(930495,324044)和数据类型为int64的数组分配2.19 TiB

我当前的Tensorflow版本是2.0.0。

X是数据类型对象的数组-本质上是要向量化的句子数组。

y是二进制标签的数组-0或1 array([0,0,0,....,1,1,1],dtype = int64)

计数矢量化后:

X_train是类型为'的930495x324044稀疏矩阵,具有14680380个压缩稀疏行格式的存储元素

X_test是类型为'的310165x324044稀疏矩阵,其中包含4837502以压缩稀疏行格式存储的元素

这里是什么问题?是因为Tensorflow 2.0.0版不支持稀疏矩阵,还是矢量化后我的数据集太大了?我该如何解决这个问题?

如果在我尝试搜索时有人可以就此提出建议,但似乎找不到解决该问题的方法,将不胜感激。

代码

df = joblib.load(classification_labeled_dataset)

X = df['Sentence'].to_numpy()
y = df['Label'].to_numpy()

from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,stratify=y,random_state=100)

from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer()
vectorizer.fit(X_train)
X_train = vectorizer.transform(X_train)
X_test = vectorizer.transform(X_test)

from tensorflow.keras.models import Sequential
from tensorflow.keras import layers

features = X_train.shape[1]
model = Sequential()
model.add(layers.Dense(10,input_dim=features,activation='relu'))
model.add(layers.Dense(1,activation='sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])
model.summary()

history = model.fit(X_train,epochs=100,verbose=False,validation_data=(X_test,y_test),batch_size=10)

loss,accuracy = model.evaluate(X_train,verbose=False)

错误回溯

在[24]中:history = model.fit(X_train,y_train,epochs = 100,verbose = False,validation_data =(X_test,y_test),batch_size = 10) 警告:tensorflow:由于错误而从v2循环回退:无法找到可以处理输入的数据适配器: 追溯(最近一次通话):

文件”,历史记录中的第1行= model.fit(X_train,y_train,epochs = 100,verbose = 1,validation_data =(X_test,y_test),batch_size = 10 )

文件“ D:\ Users \ user1.conda \ envs \ env1 \ lib \ site-packages \ tensorflow_core \ python \ keras \ engine \ training.py”,第728行,适合 use_multiprocessing = use_multiprocessing

文件“ D:\ Users \ user1.conda \ envs \ env1 \ lib \ site-packages \ tensorflow_core \ python \ keras \ engine \ training_arrays.py”,第642行,适合 shuffle = shuffle)

文件“ D:\ Users \ user1.conda \ envs \ env1 \ lib \ site-packages \ tensorflow_core \ python \ keras \ engine \ training.py”,第2490行,在_standardize_user_data中 convert_x.append(_convert_scipy_sparse_tensor(a,b))

文件“ D:\ Users \ user1.conda \ envs \ env1 \ lib \ site-packages \ tensorflow_core \ python \ keras \ engine \ training.py”,第3211行,位于_convert_scipy_sparse_tensor中 返回value.toarray()

文件“ D:\ Users \ user1.conda \ envs \ env1 \ lib \ site-packages \ scipy \ sparse \ compressed.py”,行1025,在数组中 out = self._process_toarray_args(order,out)

文件“ D:\ Users \ user1.conda \ envs \ env1 \ lib \ site-packages \ scipy \ sparse \ base.py”,行1185,在_process_toarray_args中 返回np.zeros(self.shape,dtype = self.dtype,order = order)

MemoryError:无法为形状(930495,324044)和数据类型为int64的数组分配2.19 TiB

在[25]中:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。