Пользовательская оценка с использованием разреженной матрицы - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь сделать почти то же самое, что и Tensorflow DNN с разреженной матрицей tf-idf

Однако я пытаюсь сделать собственную оценку. Я следил за большей частью того, что он сделал,

ввод:

(<tensorflow.python.framework.sparse_tensor.SparseTensor object at 0x125fd6b70>, <tf.Tensor 'IteratorGetNext:1' shape=(?, 34549) dtype=int64>)

столбцы объектов:

[_NumericColumn(key='\x03', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None), _NumericColumn(key='\x08', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None), _NumericColumn(key='\t', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None), _NumericColumn(key='\x0b', shape=(1,), default_value=None, dtype=tf.float32, normalizer_fn=None)

получение разреженного тензора:

def convert_sparse_matrix_to_sparse_tensor(X):
coo = X.tocoo()
indices = np.mat([coo.row, coo.col]).transpose()
return tf.SparseTensorValue(indices, coo.data, coo.shape)

функция ввода:

def inputs_fn(X,y):
    dataset = tf.data.Dataset.from_tensors((X,y))
    dataset = dataset.shuffle(1000).repeat().batch(500)
    return dataset.make_one_shot_iterator().get_next()

получение ключей столбцов функций:

    feature_cols = []
for key in feature_names:
    feature_cols.append(tf.feature_column.numeric_column(key=key))

входной слой (эффективно снятый с сайта тензорного потока):

    def my_model_fn(
   features, # This is batch_features from input_fn
   labels,   # This is batch_labels from input_fn
   mode,
   params
   ):    # Instance of tf.estimator.ModeKeys, see below
    #feature_cols = [tf.feature_column.embedding_column(categorical_column=key, dimension=1) for key in feature_names]
    input_layer = tf.feature_column.input_layer(features, params['feature_columns'])

лямбда-функция ввода и инициализация:

    X = convert_sparse_matrix_to_sparse_tensor(X)
print(inputs_fn(X,y) , 'INPUTS ARE CORRECTLY IN TUPLE FORM')

input = lambda : inputs_fn(X,y)

classifier = tf.estimator.Estimator(model_fn=my_model_fn,params={'feature_columns':feature_cols},model_dir='/checkpoints')
classifier.train(input_fn=input)

ошибка, которую я получаю:

Traceback (most recent call last):
  File "/Users/william/mn-classification/estimator-01/Model.py", line 103, in <module>
    classifier.train(input_fn=input)
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 363, in train
    loss = self._train_model(input_fn, hooks, saving_listeners)
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 843, in _train_model
    return self._train_model_default(input_fn, hooks, saving_listeners)
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 856, in _train_model_default
    features, labels, model_fn_lib.ModeKeys.TRAIN, self.config)
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/estimator/estimator.py", line 831, in _call_model_fn
    model_fn_results = self._model_fn(features=features, **kwargs)
  File "/Users/william/PycharmProjects/mn-classification/estimator-01/Model.py", line 44, in my_model_fn
    input_layer = tf.feature_column.input_layer(features, params['feature_columns'])
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/feature_column/feature_column.py", line 277, in input_layer
    trainable, cols_to_vars)
  File "/usr/local/Cellar/python/3.6.5/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/feature_column/feature_column.py", line 191, in _internal_input_layer
    scope, default_name='input_layer', values=features.values()):
TypeError: 'Tensor' object is not callable

Я не слишком уверен, что делаю не так, я только начал использовать tenorflow. Train принимает предоставленный кортеж значений / меток тензора, а функциональные столбцы представляют собой список _featurecolumns.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...