2017-09-05 2 views
0

ich nach dem Tutorial über tensorflow bin konvertieren: https://www.tensorflow.org/tutorials/wideWie ein dict Tensoren in tensorflow

Es gibt viele Eigenschaften, die kategorischen mit tf.feature_column.categorical_column_with_vocabulary_list() zu Sparse Matrix umgewandelt werden müssen.

ABER, ich will nicht den vordefinierten Estimator verwenden,

m = tf.estimator.LinearClassifier(
    model_dir=model_dir, feature_columns=base_columns + crossed_columns) 

Ich ziehe eine kostümierte NN-Modell zu verwenden, mit:

estimator = tf.contrib.learn.Estimator(model_fn=model) 
estimator.fit(input_fn=input_fn(df, num_epochs=100, shuffle=True), \ 
       steps=100) 

So in model(), wird es

def model(features, labels, mode): 
    ... 
    node = tf.add(tf.matmul(features, w), b) 
    ... 

Dann habe ich die Fehler wie:

TypeError: Failed to convert object of type <class 'dict'> to Tensor. 
Contents: {'education': <tf.Tensor 
'random_shuffle_queue_DequeueUpTo:1' shape=(?,) dtype=string>, 'age': 
<tf.Tensor 'random_shuffle_queue_DequeueUpTo:2' shape=(?,) dtype=float64> ... 

Meine Frage ist, wie man den in einen Tensor umwandelt, der als Eingabe verwendet werden kann.

Ich hoffe, ich habe die Frage klar beschrieben. Vielen Dank im Voraus.

Antwort

0

Funktionen ist ein dict von Tensor Sie Tensor durch wie features['education'] bekommen können, aber diese Tensor noch Art von string, es kann immer noch nicht verwenden tf.add(tf.matmul(features, w), b), sollten Sie Ihre String-Typ-Funktion in nummerische Funktion mit wie tf.feature_column.categorical_column_with_vocabulary_list() verarbeiten.

Update:

Sie offical dnn implementation überprüfen, in def dnn_logit_fn Teil, es feature_column_lib.input_layer verwenden, um Eingangsschicht aus features und columns zu erzeugen, und die columns ist eine Liste von tf.feature_columns.*.

Bei der Definition eines tf.feature_columns.* wie tf.feature_column.categorical_column_with_vocabulary_list(), es Zeichenfolge akzeptieren, muss in feautres.keys() als ersten Parameter vorhanden ist, verbindet er einen Tensor von features zu einem feature_column tf zu sagen, wie der Roh-Eingang (string) Tensor in ein Feature-Tensor zu verarbeiten (numerisch).

+0

Vielen Dank für die Antwort. Aber wie kann ich die konvertierten 'Features' mit dem' tf.contrib.learn.Estimator' verknüpfen? – user2413399

+0

@ user2413399 Antwort ist aktualisiert. –

+0

Danke! Das hilft sehr und löste mein Problem. – user2413399

Verwandte Themen