TensorFlow:tf.estimator.DNNClassifier中缺乏可重复性

时间:2017-10-16 11:06:55

标签: python tensorflow random-seed

我希望使用TensorFlow对医疗数据集进行分类。 为此,我使用与https://www.tensorflow.org/get_started/estimator中提出的代码完全相同的代码,唯一的区别是我面对医疗数据集而不是Iris数据库。所以,它不是自定义代码。

我确实需要关于以下问题的帮助:如果我使用相同的网络配置参数(层数,每层中的神经元数量等)对相同数据运行相同的代码,结果是不同。我的意思是,我运行相同的代码十次,我获得十个不同的准确度值。这些值甚至大不相同,因为它们的范围从73%到83%。

这意味着被认为患有特定疾病的受试者因跑步而异。不同的是,一旦设置了网络结构,就会有几个被认为是健康或生病的受试者,这取决于只有跑步。

正如您可以想象的那样,缺乏可重复性使得该代码在科学和医学观点上都无用:在同一数据集上运行相同配置的另一个用户会发现不同的模型和不同的结果,因此可以治愈不同的主题。

我注意到,对于Iris数据库,问题似乎没有发生,准确性总是为0.9666。这取决于问题非常简单(除了一个项目以外的所有项目都可以线性分离,并且数据集非常小)。

我在互联网上进行了搜索,我找到了其他几个注意到同样问题的人。至于可能的解决方案,我已经阅读了几个,我已经全部实现了,没有结果。

在这里,我添加了一些在我的案例中失败的建议补救措施的简短列表:

os.environ['PYTHONHASHSEED'] = '0'

np.random.seed(0)

tf.set_random_seed(0)

rn.seed(0)

tf.reset_default_graph()

session_conf = tf.ConfigProto(
    intra_op_parallelism_threads=1,
    inter_op_parallelism_threads=1
)

sess = tf.Session(graph=tf.get_default_graph(), config=session_conf)

有没有机会解决这个问题?遗憾的是,如TensorFlow这样的优秀工具无法保证可重复性。

我使用以下内容:

自定义代码:不,它是https://www.tensorflow.org/get_started/estimator

中的代码

系统:Apple

操作系统:Mac OsX 10.13

TensorFlow版本:1.3.0

Python版本:3.6.3

GPU型号:AMD FirePro D700(实际上是两个这样的GPU)

非常感谢!

祝你好运

Ivanoe De Falco

0 个答案:

没有答案