tf_geometric

TensorFlow 图神经网络框架
授权协议 GPL
开发语言 Python
所属分类 神经网络/人工智能、 机器学习/深度学习
软件类型 开源软件
地区 国产
投 递 者 柳修为
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

tf_geometric是一个高效且友好的图神经网络库,同时支持TensorFlow 1.x 和 2.x。

受到rusty1s/pytorch_geometric项目的启发,我们为TensorFlow构建了一个图神经网络(GNN)库。 tf_geometric 同时提供面向对象接口(OOP API)和函数式接口(Functional API),你可以用它们来构建有趣的模型。

高效且友好的API


tf_geometric使用消息传递机制来实现图神经网络:相比于基于稠密矩阵的实现,它具有更高的效率;相比于基于稀疏矩阵的实现,它具有更友好的API。 除此之外,tf_geometric还为复杂的图神经网络操作提供了简易优雅的API。 下面的示例展现了使用tf_geometric构建一个图结构的数据,并使用多头图注意力网络(Multi-head GAT)对图数据进行处理的流程:

# coding=utf-8
import numpy as np
import tf_geometric as tfg
import tensorflow as tf

graph = tfg.Graph(
    x=np.random.randn(5, 20),  # 5个节点, 20维特征
    edge_index=[[0, 0, 1, 3],
                [1, 2, 2, 1]]  # 4个无向边
)

print("Graph Desc: \n", graph)

graph.convert_edge_to_directed()  # 预处理边数据,将无向边表示转换为有向边表示
print("Processed Graph Desc: \n", graph)
print("Processed Edge Index:\n", graph.edge_index)

# 多头图注意力网络(Multi-head GAT)
gat_layer = tfg.layers.GAT(units=4, num_heads=4, activation=tf.nn.relu)
output = gat_layer([graph.x, graph.edge_index])
print("Output of GAT: \n", output)

输出:

Graph Desc:
 Graph Shape: x => (5, 20)  edge_index => (2, 4)    y => None

Processed Graph Desc:
 Graph Shape: x => (5, 20)  edge_index => (2, 8)    y => None

Processed Edge Index:
 [[0 0 1 1 1 2 2 3]
 [1 2 0 2 3 0 1 1]]

Output of GAT:
 tf.Tensor(
[[0.22443159 0.         0.58263206 0.32468423]
 [0.29810357 0.         0.19403605 0.35630274]
 [0.18071976 0.         0.58263206 0.32468423]
 [0.36123228 0.         0.88897204 0.450244  ]
 [0.         0.         0.8013462  0.        ]], shape=(5, 4), dtype=float32)

入门教程


使用示例进行快速入门

强烈建议您通过下面的示例代码来快速入门tf_geometric:

引用

如果您在科研出版物中使用了tf_geometric,欢迎引用下方的论文:

@misc{hu2021efficient,
      title={Efficient Graph Deep Learning in TensorFlow with tf_geometric},
      author={Jun Hu and Shengsheng Qian and Quan Fang and Youze Wang and Quan Zhao and Huaiwen Zhang and Changsheng Xu},
      year={2021},
      eprint={2101.11552},
      archivePrefix={arXiv},
      primaryClass={cs.LG}
}
  • 本文已加入  Python AI 计划,从一个Python小白到一个AI大神,你所需要的所有知识都在 这里 了。 环境要求与依赖库 Operation System: Windows / Linux / Mac OS Python: version >= 3.5 and version != 3.6 Python Packages: tensorflow/tensorflow-gpu: >= 1

  • TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。 TensorFlow可被用于语音识别或图像识别等多项机器深度学习

  • 参考  tf.convert_to_tensor - 云+社区 - 腾讯云 将给定值转换为张量。 tf.convert_to_tensor(     value,     dtype=None,     dtype_hint=None,     name=None ) 该函数将各种类型的Python对象转换为张量对象。它接受张量对象、数字数组、Python列表和Python标量。 例: impo

  • tf.maximum:用法tf.maximum(a,b),返回的是a,b之间的最大值, tf.miniimum:用法tf.miiinimum(a,b),返回的是a,b之间的最小值, tf.argmax:用法tf.argmax(a,dimension),返回的是a中的某个维度最大值的索引, tf.argmain:用法tf.argmin(a,dimension),返回的是a中的某个维度最小值的索引,

  • TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。 TensorFlow可被用于语音识别或图像识别等多项机器深度学习

  • tensorflow就是版本繁多,同一个功能有n种实现方式,之前一直用tf.gradient()计算梯度,今天发现还有tf.GradientTape. 1. tf.gradient() 参考:Tensorflow:tf.gradient()用法以及参数stop_gradient理解 import tensorflow as tf a = tf.constant(3.) b = 2*a c = a

  • tensorflow下的Graph中 tf.Operation是一个node,而tf.Tensor是一个edge 以tf.constant(0.0)为例,调用tf.constant(0.0)创建一个单独的tf.Operation,生成值42.0,将其添加到默认图形,并返回一个表示常数的值的tf.Tensor   在没有特别说明的情况下,程序中定义的tf.Operation均是添加进入default

  • 参考  tf.metrics - 云+社区 - 腾讯云 一、函数列表 accuracy(...): 计算预测与标签匹配的频率。 auc(...): 通过黎曼和计算近似AUC。 average_precision_at_k(...): 计算相对于稀疏标签的预测的平均精度@k。 false_negatives(...): 计算错误否定的总数。 false_negatives_at_thresholds

  • tf.Graph() 功能:生成新的计算图。 说明:不同计算图上的张量和运算都不会共享。 例子: import tensorflow as tf g1=tf.Graph() #将g1设置为默认图,并返回一个上下文管理器 with g1.as_default(): # 在计算图g1中定义变量"a",并设置初始值=0 A=tf.get_variable("a",shape=[1],in

  • 目录 1. tf feature_column的使用 1.1 构造训练数据集 1.2 对训练数据集的每个特征有一个大致的了解 1.3 使用feature_columns将离散特征进行编码,生成数据集 1.4 直接调用model.fit训练模型 2. 将model转换成estimator 3. pre_estimator 3.1 BaselineClassifier 3.2 LinearClassi

  • tf.gradients gradients( ys, xs, grad_ys=None, name=‘gradients’, colocate_gradients_with_ops=False, gate_gradients=False, aggregation_method=None ) 在 xs 中构造了 ys 的 w.r.t. x 和的符号偏导数. ys 和 xs 是一个张量或一个张量的列

  • 在程序中有一处不理解的地方 import basic.util.prints这个basic包找不到也搜不到,有知道的帮忙留言,谢谢 可以在下面使用print(data.eval())来输出结果 Tensors常量值函数 tf.zeros(shape, dtype=tf.float32, name=None) tf.zeros_like(tensor, dtype=None, name=None)

  • 参考  tf.quantization - 云+社区 - 腾讯云 目录 一、tf.quantization 二、tf.quantization.dequantize 三、tf.quantization.fake_quant_with_min_max_args 四、tf.quantization.fake_quant_with_min_max_args_gradient 五、tf.quantizat

  • 函数原型 tf.GradientTape( persistent=False, watch_accessed_variables=True ) 函数说明 TensorFlow 为自动微分提供了 tf.GradientTape API;即计算某个计算相对于某些输入(通常是 tf.Variable)的梯度。TensorFlow 会将在 tf.GradientTape 上下文内执行的相关运算“

  • tf::Transform r_to_w(tf::createQuaternionFromYaw(robot_pose_[2]),tf::Vector3(robot_pose_[0],robot_pose_[1],0)); tf::Transform t_to_w(tf::createQuaternionFromYaw(target_pose_[2]),tf::Vector3(target_p

  •  TensorArray可以看做是具有动态size功能的Tensor数组。通常都是跟while_loop或map_fn结合使用。 ta = tf.TensorArray(size, dtype, dynamic_size=True) # dynamic_size指定数组长度可变 ta.stack(name=None) # 将TensorArray中元素叠起来当做一个Tensor输出 ta.un

 相关资料
  • 神经网络 (Neural Network) 是机器学习的一个分支,全称人工神经网络(Artificial Neural Network,缩写 ANN),是一种模仿生物神经网络的结构和功能的数学模型或计算模型,用于对函数进行估计或近似。 Perceptron (感知器) 一个典型的神经网络由输入层、一个或多个隐藏层以及输出层组成,其中箭头代表着数据流动的方向,而圆圈代表激活函数(最常用的激活函数为

  • 译者:bat67 最新版会在译者仓库首先同步。 可以使用torch.nn包来构建神经网络. 我们以及介绍了autograd,nn包依赖于autograd包来定义模型并对它们求导。一个nn.Module包含各个层和一个forward(input)方法,该方法返回output。 例如,下面这个神经网络可以对数字进行分类: 这是一个简单的前馈神经网络(feed-forward network)。它接受一

  • 我玩神经网络。我了解卷积层、完全连接层和许多其他东西是如何工作的。我还知道什么是梯度,以及如何训练这样的网络。 框架千层面包含一个称为InverseLayer的层。 InverseLayer类通过应用要反转的层相对于其输入的偏导数,对神经网络的单层执行反转操作。 我不知道这是什么意思,或者我应该在什么时候使用这个层。或者倒置偏导数背后的想法是什么? 非常感谢你

  • 我用newff在Matlab中创建了一个用于手写数字识别的神经网络。 我只是训练它只识别0 输入层有9个神经元,隐层有5个神经元,输出层有1个神经元,共有9个输入。 我的赔率是0.1 我在Matlab中进行了测试,网络运行良好。现在我想用c语言创建这个网络,我编写了代码并复制了所有的权重和偏差(总共146个权重)。但当我将相同的输入数据输入到网络时,输出值不正确。 你们谁能给我指点路吗? 这是我的

  • 我用两个输出神经元会得到更好的结果吗?(一个激活为“是音乐”,另一个激活为“不是音乐”)。 (您可以在这里看到这方面的C++源代码:https://github.com/mcmenaminadrian/musonet--尽管在任何给定的时间,公开回购中的内容可能并不完全是我在机器上使用的内容。)

  • 递归神经网络 递归神经网络(RNN)是两种人工神经网络的总称。一种是时间递归神经网络(recurrent neural network),另一种是结构递归神经网络(recursive neural network)。时间递归神经网络的神经元间连接构成有向图,而结构递归神经网络利用相似的神经网络结构递归构造更为复杂的深度网络。两者训练的算法不同,但属于同一算法变体(百度百科)。本节我们重点介绍时间递

  • PyTorch包含创建和实现神经网络的特殊功能。在本章中,我们将创建一个简单的神经网络,实现一个隐藏层开发单个输出单元。 我们将使用以下步骤使用PyTorch实现第一个神经网络 - 第1步 首先,需要使用以下命令导入PyTorch库 - 第2步 定义所有图层和批量大小以开始执行神经网络,如下所示 - 第3步 由于神经网络包含输入数据的组合以获得相应的输出数据,使用以下给出的相同程序 - 第4步 借

  • 我正在学习神经网络和反向传播。我想我了解网络是如何工作的,在输入、输出、隐藏层、权重、偏差等方面。但是,我仍然不完全了解如何设计一个网络来适应一个问题。IE:假设我想要一个神经网络来学习如何演奏曲子,我该如何把这个问题转化为神经网络的设计呢?欢呼:)