是否需要为skflow.TensorFlowDNNClassifier扩展数据?

时间:2016-03-10 05:15:07

标签: neural-network tensorflow skflow

我的同事和关于Cross Validated的这个问题说你应该将数据转换为神经网络的零均值和单位方差。但是,我的表现在缩放方面略差于没有。

我尝试使用:

scaler = preprocessing.StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)

steps = 5000
def exp_decay(global_step):
    return tf.train.exponential_decay(
        learning_rate=0.1, global_step=global_step,
        decay_steps=steps, decay_rate=0.01)


random.seed(42) # to sample data the same way
classifier = skflow.TensorFlowDNNClassifier(
    hidden_units=[150, 150, 150],
    n_classes=2, 
    batch_size=128, 
    steps=steps, 
    learning_rate=exp_decay)

classifier.fit(X_train, y_train)

y_pred = classifier.predict(X_test)

我做错了什么或者没有必要缩放?

1 个答案:

答案 0 :(得分:2)

对于没有正则化和线性模型的模型,通常缩放最有利。例如,没有正则化的简单均方误差丢失(如在TensorFlowLinearRegressor中)将不能很好地处理非缩放数据。

在您的情况下,您使用的是运行softmax正则化的分类器,并且您正在使用DNN,因此不需要缩放。如果这是一件有用的事情,DNNs可以对重新缩放进行建模(通过第一层中特征的偏差和权重)。