2017-07-06 28 views
0

进出口新的Tensorflow & ML而下面这个实例: https://www.tensorflow.org/get_started/tflearn如何配置隐藏图层中DNNClassifier

它工作得很好,直到变化hidden_units参数在这里:

classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns, 
             hidden_units=[10, 20, 10], 
             n_classes=3, 
             model_dir="/tmp/iris_model") 

当我尝试任何事情,对于例如hidden_units = [20, 40, 20]hidden_units = [20]它会引发错误。

我试图找到我自己的,但迄今为止失败,并认为这里的人可以帮助。 问题是如何为DNN分类器选择一些隐藏层,以及为什么上面的两个示例不起作用?

这里是一个全码:

from __future__ import absolute_import 
from __future__ import division 
from __future__ import print_function 

import os 
import urllib 

import tensorflow as tf 
import numpy as np 

IRIS_TRAINING = "iris_training.csv" 
IRIS_TRAINING_URL = "http://download.tensorflow.org/data/iris_training.csv" 

IRIS_TEST = "iris_test.csv" 
IRIS_TEST_URL = "http://download.tensorflow.org/data/iris_test.csv" 

if not os.path.exists(IRIS_TRAINING): 
    raw = urllib.request.urlopen(IRIS_TRAINING_URL).read() 
    with open(IRIS_TRAINING,'wb') as f: 
    f.write(raw) 

if not os.path.exists(IRIS_TEST): 
    raw = urllib.request.urlopen(IRIS_TEST_URL).read() 
    with open(IRIS_TEST,'wb') as f: 
    f.write(raw) 

# Load datasets. 
training_set = tf.contrib.learn.datasets.base.load_csv_with_header(
    filename=IRIS_TRAINING, 
    target_dtype=np.int, 
    features_dtype=np.float32) 
test_set = tf.contrib.learn.datasets.base.load_csv_with_header(
    filename=IRIS_TEST, 
    target_dtype=np.int, 
    features_dtype=np.float32) 

# Specify that all features have real-value data 
feature_columns = [tf.contrib.layers.real_valued_column("", dimension=4)] 

# Build 3 layer DNN with 10, 20, 10 units respectively. 
classifier = tf.contrib.learn.DNNClassifier(feature_columns=feature_columns, 
              hidden_units=[10, 20, 10], 
              n_classes=3, 
              model_dir="/tmp/iris_model") 
# Define the training inputs 
def get_train_inputs(): 
    x = tf.constant(training_set.data) 
    y = tf.constant(training_set.target) 

    return x, y 

# Fit model. 
classifier.fit(input_fn=get_train_inputs, steps=2000) 
# Define the test inputs 
def get_test_inputs(): 
    x = tf.constant(test_set.data) 
    y = tf.constant(test_set.target) 

    return x, y 

# Evaluate accuracy. 
accuracy_score = classifier.evaluate(input_fn=get_test_inputs, 
            steps=1)["accuracy"] 

print("\nTest Accuracy: {0:f}\n".format(accuracy_score)) 

回答

0

发现, 如果model_dir不超过MOEL指定的工作只是与新hidden_units

罚款