我尝试跑步:
import numpy as np
import pandas as pd
import tensorflow as tf
import numpy as np
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense, Embedding, GlobalAveragePooling1D
from tensorflow.keras.layers import TextVectorization
from sklearn.model_selection import train_test_split
from tensorflow import keras
from nltk.tokenize.treebank import TreebankWordTokenizer, TreebankWordDetokenizer
from sklearn.feature_extraction.text import CountVectorizer
dataf=pd.read_csv('D:/datafile.csv')
data=pd.read_csv("D:/dataset1c2f4b7/dataset/train.csv",encoding='latin-1')
l=[]
for a in dataf['text']:
l.append(a)
m=[]
for a in dataf['target']:
m.append(a)
X_train, X_test, y_train, y_test = train_test_split(l, m, test_size=0.2, random_state=42)
vectorizer = CountVectorizer()
vectorizer.fit(X_train)
X_train = vectorizer.transform(X_train)
X_test = vectorizer.transform(X_test)
X_train=np.array(X_train)
X_test=np.array(X_test)
y_train=np.array(y_train)
y_test=np.array(y_test)
print(X_train)
model = keras.models.Sequential()
model.add(keras.layers.Embedding(10000, 128))
model.add(keras.layers.SimpleRNN(64, return_sequences=True))
model.add(keras.layers.SimpleRNN(64))
model.add(keras.layers.Dense(128, activation="relu"))
model.add(keras.layers.Dropout(0.4))
model.add(keras.layers.Dense(1, activation="sigmoid"))
model.summary()
model.compile("rmsprop",
"binary_crossentropy",
metrics=["accuracy"])
model.fit(X_train, y_train,epochs=5,verbose=False,validation_data=(X_test, y_test),batch_size=10)
model.save('gfgModel.h5')
tf.saved_model.save(model, 'one_step 05')
这表明
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type csr_matrix)
我正在尝试创建一个文本分类器。
我只是期待模型能够被训练,因为一切都是数组形式。
我可能应该等到你回答我的问题,但是......这里有一些观察结果
这个循环,当它工作时:
l=[]
for a in dataf['text']:
l.append(a)
比必要的慢。
dataf['text']
是一个熊猫系列。 那就可以直接用了。 否则尝试 dataf['text'].to_list()
甚至 dataf['text'].to_numpy()
。 检查文档以验证方法名称。
根据文档,
CountVectorizer()
会产生稀疏的csr_matrix
。 如果是这样 np.array(X_train)
将产生一个单行 csr_matrices
的数组。 这不是将稀疏矩阵转换为密集数组的正确方法。
anArray = sparse_matrix.toarray()
才是正确的方法