0

我的同事和 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)

我做错了什么还是不需要缩放?

4

1 回答 1

2

通常,缩放对于没有正则化和线性模型的模型最有利。例如,TensorFlowLinearRegressor没有正则化的简单均方误差损失(如 in )在未缩放的数据上效果不佳。

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

于 2016-03-18T16:27:46.090 回答