Tensorflow estimator.DNNClassifier不重复结果

时间:2018-07-20 00:09:18

标签: python repeat tensorflow-estimator

每次我运行以下代码时,在训练模型时都会得到不同的“最终步骤损失”。随后的评估准确性也会改变。我检查了来自train_test_split的输入数据是否恒定。我已经设置了tf.random_seed的值,关闭了改组并设置了num_threads的值。我正在使用Tensorflow 1.8。谁能建议我我还需要做什么?

from __future__ import print_function
import numpy as np
import pandas as pd
import tensorflow as tf
from sklearn.model_selection import train_test_split

np.random.seed(1)
tf.set_random_seed(1)

df = pd.read_csv('diabetes.csv')
X = df.iloc[:,0:8]
y = df['Outcome']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,
                                   stratify=None, random_state=1)

def create_feature_cols():
  return [
    tf.feature_column.numeric_column('Pregnancies'),
    tf.feature_column.numeric_column('Glucose'),
    tf.feature_column.numeric_column('BloodPressure'),
    tf.feature_column.numeric_column('SkinThickness'),
    tf.feature_column.numeric_column('Insulin'),
    tf.feature_column.numeric_column('BMI'),
    tf.feature_column.numeric_column('DiabetesPedigreeFunction'),
    tf.feature_column.numeric_column('Age')
  ]

input_func = tf.estimator.inputs.pandas_input_fn(x=X_train,y=y_train,
             batch_size=10,num_epochs=1000,shuffle=False,num_threads=1)
model  =  tf.estimator.DNNClassifier(hidden_units=[20,20],
          feature_columns=create_feature_cols(),n_classes=2)
model.train(input_fn=input_func,steps=1000)

eval_input_func = tf.estimator.inputs.pandas_input_fn(
      x=X_test,
      y=y_test,
      batch_size=10,
      num_epochs=1,
      shuffle=False,
      num_threads=1)
results = model.evaluate(eval_input_func)`

1 个答案:

答案 0 :(得分:0)

这是TensorFlow发送给我的一些代码来解决该问题。而不是使用tf.set_random_seed,而是使用tf.estimator.RunConfig与估算器。

import numpy as np
from PIL import Image

img = Image.open('orig.png').convert('RGBA')
arr = np.array(img)


# make a 1-dimensional view of arr
flat_arr = arr.ravel()