【问题标题】:TensorFlow estimator DNNClassifier fails to do 2-time linear separationTensorFlow 估计器 DNNClassifier 无法进行 2 次线性分离
【发布时间】:2019-12-27 09:48:56
【问题描述】:

我正在尝试用一些简单的数据测试 TensorFlow tf.estimator.DNNClassifier

X = [[1,2], [1,12], [1,17], [9,33], [48,49], [48,50]]
Y = [ 1,     1,      1,      1,      2,       3     ]

分类器有 2 个输入:x1,x2;并且具有这种形状:

#these 4 layers supposed to be able to do even 4-time linear separation
hidden_units = [2000,1000,500,100]
n_classes    = 4    

但是,事情并没有如期进行,网络无法适应。准确度很快就达到了 8.33 (=5/6) 但后来卡住了。损失收敛到水平线而不是零线。

上面提供的数据是 2 次线性可分的(右键单击图像以在新选项卡中打开):

即使网络跑到 10,000 步,它仍然卡住,我猜它卡住了,因为它无法分离 2 个值:Y=2 和 Y=3,是这样吗?以及如何使网络适合上述数据。

【问题讨论】:

  • 首先要做的是对输入数据进行预处理。重要的是如何将整数值映射到从 0 到 1 的神经元激活信号。第二步是将神经元的数量减少到更小的数量。在第一层使用 2000 个神经元来计算一个简单的映射是巨大的工程。
  • 我已经尝试了这两种方法,标准化输入和减少神经元,但没有好的结果。

标签: python tensorflow machine-learning artificial-intelligence linear-regression


【解决方案1】:

我尝试使用这些并且它有效:

  • 使用泄漏的 relu 或 sigmoid
  • 减少层数
  • 减少每一层的神经元数量
  • 标准化输入
  • 如果需要,增加步数和 epochs

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-04-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    • 2018-04-04
    相关资源
    最近更新 更多