减少移动设备的内存占用,使用AOT编译子图来减少tensorflow执行时间,atv,能够共享object/header file pair给其他应用,能够在Mobile Inference上减少几个数量级的内存占用; 提高了程序的可移植性,能够在不改变大部分tensorflow源码的前提下,很容易地更改以适应新的硬件设备, XLA主要包括两种使用方式:JIT(Just in time)能够自动将Graph中的部分子图通过XLA融合某些操作来减少内存需求提高执行速度;AOT(Ahead of time)可以提前将Graph转换为可以执行的源码,减少生成的可执行文件的大小,减少运行的时间消耗,一个很明显的应用场景是模型在移动设备上的Inference优化。 因为XLA原理涉及到编译器,这块不是我擅长的地方,所以这里就这样过了, 如果有兴趣的小伙伴可以关注下(https://www.tensorflow.org/versions/master/experimental/xla/)还有此次TensorFlowDev Submit上XLA的talk(https://www.youtube.com/watch?v=kAOanJczHA0&index=2&list=PLOU2XLYxmsIKGc_NBoIhTn2Qhraji53cv#t=108.706756) 最后贴几张XLA的一些评测性能:
Keras与TensorFlow的集成 Keras 是一个可以在很多平台上应用的深度学习框架,"An API Specify for building deep learning models across many platforms"。 TensorFlow已经会在官方TensorFlow支持,1.1会在tf.contrib,1.2会tf.keras,而且会支持TensorFlow Serving,是不是很心动。 Keras的作者在TensorFlow Dev Submit上讲了以下内容: 所以之后Keras的用户可以更快的在TensorFlow的框架下做出相应地模型,能更方便地进行分布式训练,使用Google的Cloud ML, 进行超参,还有更更重要的:TF-Serving。这些feature现在好像还没有支持,不过应该很快了,大家可以期待下。 这里,Francois Chollet使用Keras构造了一个Video-QA的model,这个模型在Keras的官方文档也有描述,具体可以去那边看看,大概是这样一个场景: 这样一个场景,利用原生的python构造太难了,但是用Keras,只需要考虑设计你的模型,如何来完成类似的功能,完全不用担心coding的实现,如图是一个类似问题的一个简单地模型设计: 更详细一点: 而在Keras中如何实现呢? video = tf.keras.layers.Input(shape=(None, 150, 150, 3))cnn = tf.keras.applications.InceptionV3(weights='imagenet', include_top=False, pool='avg)cnn.trainable = Falseencoded_frames = tf.keras.layers.TimeDistributed(cnn)(video)encoded_vid = tf.layers.LSTM(256)(encode_frames)question = tf.keras.layers.Input(shape=(100), dtype='int32')x = tf.keras.layers.Embedding(10000, 256, mask_zero=True)(question)encoded_q = tf.keras.layers.LSTM(128)(x)x = tf.keras.layers.concat([encoded_vid, encoded_q])x = tf.keras.layers.Dense(128, activation=tf.nn.relu)(x)outputs = tf.keras.layers.Dense(1000)(x)model = tf.keras.models.Mode([video, question], outputs)model.compile(optimizer=tf.AdamOptimizer(), loss=tf.softmax_crossentropy_with_logits) (责任编辑:本港台直播) |