这里代码是无法在现在的tensorflow版本上跑的,如果想了解下keras上构建上述模型的简便性,可以看看Keras的文档(https://keras.io/getting-started/functional-api-guide/)。Keras在构造深度模型的方便是大家众所周知的,值得期待之后Keras在TensorFlow的更新: TensorFlow High-Level APIs: Models in a Box TensorFlow在灵活性、可扩展性、可维护性上做的很好,但是现在在高级api、模块式算法这块原先都还不足,但是Google Brain的工程师在这个talk上介绍了一些High-level API的相关工作。 layers: 封装了一些层的操作,简化用原生TensorFlow源码,比如new 一个variable来做weight等等; Estimator or Keras: 封装了一些更高层的操作包括,train和evaluate操作,用户可以通过几行代码来快速构建训练和评估过程; Canned Estimators: 更高级API,所谓的Models in a box 构造左图中所示的深度网络只需要如图右中的七行代码同样,构建训练、评估、预测也很快可以通过api调用完成: 最后是Model in a Box area = real_valued_column("square_foot")rooms = real_valued_column("num_rooms")zip_code = sparse_column_with_integerized_feature("zip_code", 100000)regressor = LinearRegressor(feature_columns=[area, room, zip_code])classifier.fit(train_input_fn)classifier.evaluate(eval_input_fn) 其他技术及生态 ML Toolkit TensorFlow可能最开始被人知晓,就是因为大家都觉得他是一个深度学习的框架,其实不是,现在TensorFlow上还有很多机器学习的算法集成: 而且算法API的开发都是仿照scikit-learn的风格,有Python下做机器学习的小伙伴,可以很快的适应。 这里值得提出的,有趣TensorFlow对机器学习和深度学习模型的支持,小伙伴们可以特别容易地结合传统的机器学习方法和深度学习模型来一起训练: 分布式TensorFlow TensorFlow在分布式性能上,前面也提到了,在1.0版本上有了很大的提升可以做到64块GPU上达到58倍的加速,这里先基本介绍下数据并行和模型并行:
数据并行 每一个worker上有完整的模型,部分数据,参数的更新传给Params Server; 模型并行 每一个worker上有部分的网络模型; 怎么在TensorFlow写分布式代码,这里我就不说了,很简单地配置,这里我讲下,可能大部分像我这样的小伙伴之前不太了解的一些彩蛋。在TensorFlow中做分布式训练的一些技巧,有过分布式train的经验应该会很感激这些黑科技: Round-Robin variables Load balancing and partitioning 上面说的是啥呢? Params Server在保存模型的参数时,默认是每一个ps存一个variable,然后下一个到下个ps上存,但是就会存在很多问题,可能这个variable很小,但是另一个很大,这样你会发现ps和work之间的带宽的占用差距很多,怎么解决呢?看下面几张图。
(责任编辑:本港台直播) |