python - InvalidArgumentError: indices[3] = [0,2917] 出现故障。许多稀疏操作需要排序索引
问题描述
我面临以下错误::
InvalidArgumentError: indices[3] = [0,2917] 出现故障。许多稀疏操作需要排序索引。用于tf.sparse.reorder
创建正确排序的副本。
我不确定如何解决该错误。我尝试了重新排序方法,但它不起作用
这是下面的代码::
def score_transform(X):
y_reshaped = np.reshape(X['rating'].values, (-1, 1))
for index, val in enumerate(y_reshaped):
if val >= 8:
y_reshaped[index] = 1
elif val >= 5:
y_reshaped[index] = 2
else:
y_reshaped[index] = 0
y_result = to_categorical(y_reshaped)
return y_result
def convert_sparse_matrix_to_sparse_tensor(X):
coo = X.tocoo()
indices = np.mat([coo.row, coo.col]).transpose()
return tf.sparse.reorder(tf.SparseTensor(indices, coo.data, coo.shape))
df_train = pd.read_csv("/content/drive/MyDrive/NLP_Prj/drugsComTrain_raw.csv", parse_dates=["date"])
df_test = pd.read_csv("/content/drive/MyDrive/NLP_Prj/drugsComTest_raw 2.csv", parse_dates=["date"])
df_train, df_test = train_test_split(df_all, test_size=0.33, random_state=42)
X_train=(df_train['review_clean'].to_numpy())
X_test=(df_test['review_clean'].to_numpy())
test_train = np.concatenate([X_train, X_test])
X_onehot = vectorizer.fit_transform(test_train)
X_onehot1=convert_sparse_matrix_to_sparse_tensor(X_onehot)
#Model
model = keras.models.Sequential()
model.add(keras.layers.Dense(200, input_dim=len(vectorizer.get_feature_names())))
model.add(keras.layers.BatchNormalization())
model.add(keras.layers.Activation('relu'))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Dense(300))
model.add(keras.layers.BatchNormalization())
model.add(keras.layers.Activation('relu'))
model.add(keras.layers.Dropout(0.5))
model.add(keras.layers.Dense(256, activation='relu'))
model.add(keras.layers.Dense(3, activation='softmax'))
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
hist = model.fit(X_onehot1, y_train1, epochs=10, batch_size=128,verbose=1, validation_data=(X_onehot[157382:157482], y_train1[157382:157482]))
如何解决这个问题?
解决方案
出现这个错误主要是因为tensorflow和keras版本不匹配。不要直接做 import tensorflow 比如
import tensorflow as tf
当我使用下面的行时,错误已修复。我可以训练模型。而是使用以下代码行:
import tensorflow.python.keras.backend as K
sess = K.get_session()
推荐阅读
- postgresql - 雪花数据类型等效于 Postgres jsonb 数据类型
- reactjs - 尝试在我的 Windows 10 机器上运行 React Native iOS 和 android 模拟器
- laravel - Laravel 验证修复 422
- android - 无法在 Crashlytics 中获取本机崩溃的堆栈跟踪
- regex - 如何在字符串中使用golang正则表达式所有匹配
- mysql - spring 使用 spring JDBCTemplate 在 mysql 表中插入一行
- typo3 - Typo3 - 更新域导致 404 错误
- php - Eloquent - 插入相关模型
- android - Android BottomSheetBehavior setPeekHeight(int peekHeight, boolean animate) 不对高度过渡进行动画处理
- winapi - Win32 事件名称仅对自己的进程可见