如何解决Tensorflow错误:无法找到可以处理输入的数据适配器:<class'scipy.sparse.csr.csr_matrix'>,<class'NoneType'>和内存错误
当我尝试使用Tensorflow / Keras为我的数据集测试一些文本分类样本代码时遇到两个错误-https://realpython.com/python-keras-text-classification/
代码在Sklearn模型上运行良好,但是当我将其更改为使用Tensorflow / Keras时,会遇到这些错误。
警告和错误
(1)警告:tensorflow:由于错误而从v2循环回退:无法找到可以处理输入的数据适配器:
我当前的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循环回退:无法找到可以处理输入的数据适配器:
文件“
文件“ 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 举报,一经查实,本站将立刻删除。