2017-12-05 8 views
0

私はTensorFlow Dataset APIを使用してCSVファイルを解析し、ロジスティック回帰を実行しています。私はTFの文書hereの例に従っています。TensorFlow Dataset APIの解析エラー

def input_fn(path, num_epochs, batch_size): 
    dataset = tf.data.TextLineDataset(path) 
    dataset = dataset.map(parse_table, num_parallel_calls=12) 
    dataset = dataset.repeat(num_epochs) 
    dataset.batch(batch_size) 

    iterator = dataset.make_one_shot_iterator() 
    features, labels = iterator.get_next() 
    return features, labels 

def parse_table(value): 
    cols = tf.decode_csv(value, record_defaults=TAB_COLUMN_DEFAULTS) 
    indep_vars = dict(zip(CSV_COLS, cols)) 
    y = indep_vars.pop('y') 
    return indep_vars, y 

def build_indep_vars(): 
    continuous_vars = [ 
     tf.feature_column.numeric_column(x, shape=1) for x in CONT_COLS] 
    categorical_vars = [ 
     tf.feature_column.categorical_column_with_hash_bucket(
      x, hash_bucket_size=100) for x in CAT_COLS] 
    return categorical_vars + continuous_vars 

lr.train(input_fn = lambda: input_fn(data_path, 1, 100))呼び出す(注:バッチサイズは100)私は

ValueError: Feature (key: V1) cannot have rank 0. Give: Tensor("IteratorGetNext:0", shape=(), dtype=float32, device=/device:CPU:0) 

だから私はエラーを取得しています、私はモデルを設定していますか

は、次のコードスニペットを示していこれは、tf.feature_column.numeric_columnコールの1つがスカラー値を得ていることを意味すると仮定しています。しかし、なぜこれが当てはまるのか分かりません。私はbatch_sizeを正の整数に設定しました。ドキュメントによれば、tf.feature_column.numeric_columnから生成されるNDarの形状は、デフォルトで1Xbatch_sizeになるはずです。 TensorFlowがこのエラーを返す理由を誰でも説明できますか?

私はこの質問には簡単な答えがあると確信していますが、私はそれを理解していないのは馬鹿だと感じるでしょう。

答えて

0

tf.feature_columnメソッドで入力がバッチ処理されると予想されるため、エラーが発生しました。 原因は単純な入力ミスで、Dataset.batch()の変換が中止されていると思います。 tf.data.Datasetの変換方法(例えばDataset.map()Dataset.repeat()Dataset.batch())のいずれかが、あなたがそれらのメソッドと呼ばれるオブジェクトを変更しません呼び出す

dataset = dataset.batch(batch_size) 

次の行でdataset.batch(batch_size)を交換してください。代わりに、これらのメソッドはの新しいDatasetオブジェクトを返します。これらのオブジェクトはさらに変換に使用するか、Iteratorにすることができます。

+0

実際には、問題は 'dataset.batch(batch_size)'の出力を割り当てていませんでした。ありがとう! – aht