我正在尝试使用Tensorflow在Python 3.5中创建一个DNN,用于将元组分类为 3 类之一。
# define initial hyperparameters
batch_size = 100
train_steps = 5000
hidden_units=[10,20,10]
# build model
dnn = tf.contrib.learn.DNNClassifier(hidden_units=hidden_units, feature_columns=feature_cols, n_classes=3)
input_fn = tf.estimator.inputs.pandas_input_fn(x=X_train, y=y_train,
batch_size=batch_size,
num_epochs=None,
shuffle=True)
# fit model to the data
dnn.fit(input_fn = input_fn, steps=train_steps)
# predict new data
predict_input_func = tf.estimator.inputs.pandas_input_fn(x=X_test,
batch_size=len(X_test),
shuffle=False)
preds = dnn.predict_classes(input_fn=predict_input_func)
X_train(和X_test)由7个数字列组成。 y_train(和y_test)由1个数字列组成,作为响应变量,[0或1或2]。
当我用上述模型预测时,我的准确度非常差(50-70%的准确度)。
似乎我已经弄清楚了为什么 - 我的模型预测新输入的类要么是0还是2 ......所以它会丢失所有实际上为1类的记录。
有人可以给我一个提示,为什么会这样?我已经读过softmax可能是解决方案......如果是这样的话,我很困惑为什么在Tensorflow文档(章节入门/虹膜分类)中描述了3类类似的DNN。
编辑:我当然尝试过针对不同的超参数。