作家
登录

TensorFlow广度和深度学习的教程

作者: 来源: 2017-12-04 09:41:22 阅读 我要评论

], hash_bucket_size=1000), 
  •  tf.feature_column.crossed_column( 
  •  ["native_country""occupation"], hash_bucket_size=1000) 
  • 深度模型:嵌入式神经收集

    具有交叉特点列的广度模许可以有效地记忆特点之间的稀少交互。也就是说,交叉特点列不克不及概括没有在练习数据中出现的特点组合。让我们采取嵌入方法来添加一个深度模型来修复这个问题。

    我们将应用 embedding_column 设备分类嵌入列,并将它们与持续列连接:

    1. deep_columns = [ 
    2.  tf.feature_column.indicator_column(workclass), 
    3.  tf.feature_column.indicator_column(education), 
    4.  tf.feature_column.indicator_column(gender), 
    5.  tf.feature_column.indicator_column(relationship), 
    6.  # 展示一个嵌仁攀例子 
    7.  tf.feature_column.embedding_column(native_country, dimension=8), 
    8.  tf.feature_column.embedding_column(occupation, dimension=8), 
    9.  age, 
    10.  education_num, 
    11.  capital_gain, 
    12.  capital_loss, 
    13.  hours_per_week, 

    嵌入的 dimension 越高,自由度就越高,模型将不得不进修这些特点的表示。为了简单起见,我们设置所有特点列的维度为 8。大年夜经验上看,关于维度的设定最好是大年夜 \log_{2}(n) 或 k\sqrt[4]{n} 值开端,这里的 n 代表特点列中独一特点的数量,k 是一个很小的常量(平日小于10)。

    经由过程密集嵌入,深度模许可以更好的概括,并更好对之前没有在练习数据中碰见的特点进行猜测。然而,当两个特点列之间的底层交互矩阵是稀少和高等级时,很难进修特点列的有效低维度表示。在这种情况下,大年夜多半特点对之间的交淮竽暌功该为零,除了少数几个,但密集的嵌入将导致所有特点对的非零猜测,大年夜而可能过度泛化。另一方面,具有交叉特点的线性模许可以用更少的模型参数有效地记住这些“异惯例则”。

    如今,我们来看看若何结合练习广度和深度模型,让它们优势和劣势互补。

    上图展示了广度模型(具有稀少特点和转换鹁?的 logistic 回归模型),深度模型(具有一个嵌入层和多个隐蔽层的前馈神经收集),广度和深度模型(两者的结合练习)的差别比较。在高层级里,只须要经由过程以下三个步调就能应用 TF.Learn API 设备广度,深度或广度和深度模型。

    1. 将广度和深度模型结合为一体

      经由过程将其最终输出的对数几率作为猜测结合起来,然后将猜测供给给 logistic 损掉函数,将广度模型和深度模型相结合。所有的图形定义和变量分派都已经被处理,所以你只须要创建一个 DNNLinearCombinedClassifier:

      1. import tempfile 
      2. model_dir = tempfile.mkdtemp() 
      3. m = tf.contrib.learn.DNNLinearCombinedClassifier( 
      4.  model_dir=model_dir, 
      5.  linear_feature_columns=wide_columns, 
      6.  dnn_feature_columns=deep_columns, 
      7.  dnn_hidden_units=[100, 50]) 

      练习和评估模型

      在练习模型之前,请先浏览人口普查数据集,就像在 《TensorFlow Liner Model Tutorial》 中所做的一样。 输入数据处理的代码再次为你供给便利:

      1. import pandas as pd 
      2. import urllib 
      3.  
      4. # 为数据集定义列名 
      5. CSV_COLUMNS = [ 
      6.  "age""workclass""fnlwgt""education""education_num"
      7.  "marital_status""occupation""relationship""race""gender"
      8.  "capital_gain"

          推荐阅读

          张一鸣:探讨人工智能边界就是探讨人类文明边界

        CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了 今日头条开创人兼CEO张一鸣我们要实现本身的愿景,必须在全球范围内去解决三个问题:第一个是应用处景的问题,这本质上是一个>>>详细阅读


        本文标题:TensorFlow广度和深度学习的教程

        地址:http://www.17bianji.com/lsqh/39382.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)