У меня есть база данных, состоящая из двух столбцов, и я хочу использовать первый для получения второго. Первый содержит около 3000 элементов, а второй содержит ровно 151 элемент. Для этого я создал плотную нейронную сеть в тензорном потоке. Однако во время обучения я получаю странную ошибку.
Вот код, который я произвел
import pandas as pd
import tensorflow as tf
from sklearn.model_selection import train_test_split
df = pd.read_excel('nn.xlsx')
x_data = df.drop('NCM',axis=1)
lista = df['NCM'].values.tolist()
prods = df['PRODUTO'].values.tolist()
seen = set()
ncm = [x for x in lista if x not in seen and not seen.add(x)]
seen = set()
prods = [x for x in prods if x not in seen and not seen.add(x)]
assigned = tf.feature_column.categorical_column_with_vocabulary_list('PRODUTO',prods)
feat_cols = [assigned]
labels = df['NCM']
X_train, X_test, y_train, y_test = train_test_split(x_data, labels, test_size=0.33, random_state=101)
input_func = tf.estimator.inputs.pandas_input_fn(x=X_train,y=y_train,batch_size=10,num_epochs=1000,shuffle=True)
input_func = tf.estimator.inputs.pandas_input_fn(x=X_train,y=y_train,batch_size=10,num_epochs=1000,shuffle=True)
embedded_group_col = tf.feature_column.embedding_column(assigned,dimension=len(prods))
feat_cols = [embedded_group_col]
dnn_model = tf.estimator.DNNClassifier(hidden_units = [10,10,10],feature_columns=feat_cols,n_classes=len(ncm))
dnn_model.train(input_fn=input_func,steps = 1000)
И код работает нормально до последней строки, в которой выдает ошибку:
InvalidArgumentError (see above for traceback): assertion failed: [Labels must <= n_classes - 1] [Condition x <= y did not hold element-wise:x (dnn/head/labels:0) = ] [[22030000][22030000][22030000]...] [y (dnn/head/assert_range/Const:0) = ] [151]
Что очень странно, так как я гарантировал, что количество классов точно такое же, как len (ncm).
Что может быть причиной этой ошибки?