TensorFlow 2.0 Alpha 实用教程

本文介绍TensorFlow 2.0 Alpha的主要改进,包括Eager Execution成为默认模式,面向对象的Keras API,以及代码简化。对比1.x版本,2.0更加易用,提供自动升级工具,并详细展示了从1.x到2.0的转换过程,包括模型定义、训练、优化等方面的改变。
摘要由CSDN通过智能技术生成

在这篇文章中我们将介绍一下 TensorFlow 2.0 Alpha 的内容,在课程准备的途中赶上了 TensorFlow 的 2019 开发人员峰会,TensorFlow 团队推出了 Alpha 版的 TensorFlow 2.0,我们这门课前一半的代码目前还是 1.x 版本的,在课程结束后会逐渐补充 2.0 版本的代码,在那之前我们先来看一下 TensorFlow 2.0 Alpha 的简易教程,这样如果大家有兴趣直接用 2.0 实现的话,这个教程会对大家有所帮助。

本文结构:

  1. TF 2.0 的优点
  2. Keras 和 TF 2.0 的比较
  3. TF 1.x 和 2.0 的比较
  4. 如何将旧代码升级:自动更新
  5. 如何将旧代码升级:深度学习常用技术 1.x 到 2.0 的转换

1. TF 2.0 的优点

今年 3 月 6-7 日,在 TensorFlow 的 2019 峰会上正式推出了 2.0 Alpha 版本。

TensorFlow 可以说是最受欢迎的深度学习框架了,那么为什么要有 TensorFlow 2.0 呢?

《Hands-On Machine Learning with Scikit-Learn and TensorFlow》这本书大家应该都知道,作者 Aurélien Gér

以下是使用TensorFlow 2.0实现GAT(Graph Attention Network)的代码: ``` python import tensorflow as tf from tensorflow.keras import layers class GAT(layers.Layer): def __init__(self, units, num_heads, activation='relu'): super(GAT, self).__init__() self.units = units self.num_heads = num_heads self.activation = activation self.W = [] self.attention = [] for i in range(self.num_heads): self.W.append(layers.Dense(units)) self.attention.append(layers.Dense(1)) self.dropout = layers.Dropout(0.5) self.add = layers.Add() def call(self, inputs): # inputs shape: (batch_size, num_nodes, input_dim) h = inputs outputs = [] for i in range(self.num_heads): Wh = self.W[i](h) a = self.attention[i](Wh) e = tf.nn.leaky_relu(a) alpha = tf.nn.softmax(e, axis=1) alpha = self.dropout(alpha) h_prime = tf.matmul(alpha, Wh, transpose_a=True) outputs.append(h_prime) if self.num_heads > 1: h_prime = self.add(outputs) else: h_prime = outputs[0] if self.activation is not None: h_prime = tf.nn.relu(h_prime) return h_prime ``` 该代码定义了一个GAT层,包含`units`个神经元和`num_heads`个头。在每个头中,会通过全连接层`W`和注意力层`attention`得到一个注意力系数`alpha`,然后将`alpha`和输入`h`做矩阵乘法和加权求和,得到新的节点表示`h_prime`。最后,将所有头得到的`h_prime`加起来,得到最终的输出。在计算`alpha`时,使用了LeakyReLU激活函数和softmax归一化。为了防止过拟合,还使用了dropout。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值