GNN Tensorflow packages

news2024/11/15 11:42:36

tf framework定义

tf.name_scope()函数

tf.name_scope(name),用于定义python op的上下文管理器。

此上下文管理器将推送名称范围,这将使其中添加的所有操作的名称带有前缀。

例如,定义一个新的Python op my_op

def my_op(a, b, c, name=None):
  with tf.name_scope("MyOp") as scope:
    a = tf.convert_to_tensor(a, name="a")
    b = tf.convert_to_tensor(b, name="b")
    c = tf.convert_to_tensor(c, name="c")
    # Define some computation that uses `a`, `b`, and `c`.
    return foo_op(..., name=scope)

在执行时,张量abc,将有名字MyOp/aMyOp/bMyOp/c

变量:创建、初始化、保存和加载

变量:创建、初始化、保存和加载

当训练模型时,用变量来存储和更新参数。变量包含张量(Tensor)存放于内存的缓存区。建模时他们需要被明确地初始化,模型训练后它们必须被存储到磁盘。这些变量的值可以在之后模型训练和分析时被加载。

文本档描述两个TensorFlow类:

  • tf.Variable类
  • tf.train.Saver类 

创建

当创建一个变量时,你将一个张量作为初始值传入构造函数Variable()。TensorFlow提供了一系列操作符来初始化张量,初始值是常量或随机值。

 Notice:所有这些操作符都需要你指定张量的shape。

# Create two variables.
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),
                      name="weights")
biases = tf.Variable(tf.zeros([200]), name="biases")
  • 一个Variable操作存放变量的值。
  • 一个初始化op将变量设置为初始值。这事实上是一个tf.assign操作
  • 初始值的操作,例子中对biases变量的zeros操作也被加入了graph。 

初始化

变量的初始化必须在模型的其他操作运行之前先明确地完成。最简单的方法就是添加一个给所有变量初始化的操作,并在使用模型之前首先运行那个操作。

使用tf.initialize_all_variables()添加一个操作对变量做初始化。该函数便捷地添加一个op来初始化模型的所有变量。

# Create two variables.
weights = tf.Variable(tf.random_normal([784, 200], stddev=0.35),
                      name="weights")
biases = tf.Variable(tf.zeros([200]), name="biases")
...
# Add an op to initialize the variables.
init_op = tf.initialize_all_variables()

# Later, when launching the model
with tf.Session() as sess:
  # Run the init operation.
  sess.run(init_op)
  ...
  # Use the model
  ...

保存和加载

最简单的保存和恢复模型的方法是使用tf.train.Saver对象。构造器给graph的所有变量,添加save和restore opration。

  • 用tf.train.Saver()创建一个Saver类管理模型中的所有变量。
# Create some variables.
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
...
# Add an op to initialize the variables.
init_op = tf.initialize_all_variables()

# Add ops to save and restore all the variables.
saver = tf.train.Saver()

# Later, launch the model, initialize the variables, do some work, save the
# variables to disk.
with tf.Session() as sess:
  sess.run(init_op)
  # Do some work with the model.
  ..
  # Save the variables to disk.
  save_path = saver.save(sess, "/tmp/model.ckpt")
  print "Model saved in file: ", save_path
  • 用一个Saver对象来恢复变量。

Notice,当你从文件中恢复变量时,不需要事先对它们做初始化。

# Create some variables.
v1 = tf.Variable(..., name="v1")
v2 = tf.Variable(..., name="v2")
...
# Add ops to save and restore all the variables.
saver = tf.train.Saver()

# Later, launch the model, use the saver to restore variables from disk, and
# do some work with the model.
with tf.Session() as sess:
  # Restore variables from disk.
  saver.restore(sess, "/tmp/model.ckpt")
  print "Model restored."
  # Do some work with the model
  ...

tf tensor packages

tf.SparseTensor()函数

TensorFlow表示一个稀疏张量,作为三个独立的稠密张量:indices,values和dense_shape。

SparseTensor(indices=[[0, 0], [1, 2]], values=[1, 2], dense_shape=[3, 4])

------------------------------------------------------------------------
[[1, 0, 0, 0]
 [0, 0, 2, 0]
 [0, 0, 0, 0]]

tf.random_normal()函数

tf.random_normal()函数用于从“服从指定正态分布的序列”中随机取出指定个数的值。

tf.random_normal(shape, mean=0.0, stddev=1.0, dtype=tf.float32, seed=None, name=None)
shape: 一维整数张量或 Python 数组.输出张量的形状.
mean: dtype 类型的0-D张量或 Python 值.正态分布的均值.
stddev:dtype 类型的0-D张量或 Python 值.正态分布的标准差.
dtype: 输出的类型.
seed: 随机数种子,是一个整数,当设置之后,每次生成的随机数都一样
name:操作的名称(可选).
输入
a = tf.Variable(tf.random_normal([2,2],seed=1))
b = tf.Variable(tf.truncated_normal([2,2],seed=2))
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print(sess.run(a))
print(sess.run(b)

输出:
[[-0.81131822 1.48459876]
[ 0.06532937 -2.44270396]]
[[-0.85811085 -0.19662298]
[ 0.13895047 -1.22127688]]
指定seed之后,a的值不变,b的值也不变

tf.layers packages

tf.layers.conv1d()函数

一维卷积一般用于处理文本数据,like序列数据,如自然语言处理领域。

地址:CNN神经网络之一维卷积、二维卷积详解

一维卷积则只是在width或者height方向上进行滑动窗口并相乘求和。

tf.layers.conv1d(
    inputs,  张量数据输入,一般是[batch, width, length]
    filters,  整数,输出空间的维度,可以理解为卷积核(滤波器)的个数
    kernel_size,  单个整数或元组/列表,指定1D(一维,一行或者一列)卷积窗口的长度。
    strides=1,  单个整数或元组/列表,指定卷积的步长,默认为1
    padding='valid',  "SAME" or "VALID" (不区分大小写)是否用0填充,SAME用0填充;VALID不使用0填充,舍去不匹配的多余项。
    data_format='channels_last',  一个字符串,一个channels_last(默认)或channels_first。输入中维度的排序。channels_last:对应于形状的输入(batch, length, channels);channels_first:对应于形状输入(batch, channels, length)
    dilation_rate=1,
    activation=None,  激活函数
    use_bias=True,  该层是否使用偏差
    kernel_initializer=None,  卷积核的初始化
    bias_initializer=tf.zeros_initializer(),  偏置向量的初始化器
    kernel_regularizer=None,  卷积核的正则化项
    bias_regularizer=None,  偏置的正则化项
    activity_regularizer=None,  输出的正则化函数
    kernel_constraint=None,
    bias_constraint=None,
    trainable=True,  Boolean,如果True,将变量添加到图collection中
    name=None,
    reuse=None  Boolean,是否使用相同名称重用前一层的权重
)
import tensorflow as tf 

x = tf.get_variable(name="x", shape=[32, 512, 1024], initializer=tf.zeros_initializer)
x = tf.layers.conv1d(
    x,
    filters=1,                    # 输出的第三个通道是1
    kernel_size=512,            # 不用管它是多大,都不影响输出的shape
    strides=1,
    padding='same',
    data_format='channels_last',
    dilation_rate=1,
    use_bias=True,
    bias_initializer=tf.zeros_initializer())

print(x)            # Tensor("conv1d/BiasAdd:0", shape=(32, 512, 1), dtype=float32)

 1. 输入数据的维度为[batch, data_length, data_width]=[32, 512, 1024],一般输入数据input第一维为batch_size,此处为32,意味着有32个样本,第二维度和第三维度分别表示输入的长和宽(512,1024)

2. 一维卷积核是二维的,也有长和宽,长为卷积核的数量kernel_size=512,因为卷积核的数量只有一个,所以宽为输入数据的宽度data_width=1024,所以一维卷积核的shape为[512,1024]

3. filteres是卷积核的个数,即输出数据的第三维度。filteres=1,第三维度为1

4. 所以卷积后的输出数据大小为[32, 512, 1]

tf.nn packages

tf.nn active_functions

tf.tanh()函数

 

tf.nn.softmax()函数

tf.nn.softmax()函数用于归一化。

tf.nn.softmax(logits,axis=None,name=None,dim=None)

logits:一个非空的Tensor。必须是下列类型之一:half, float32,float64
axis:将在其上执行维度softmax。默认值为-1,表示最后一个维度
name:操作的名称(可选)
dim:axis的已弃用的别名

 输入: 全连接层(往往是模型的最后一层)的值

输出: 归一化的值,含义是属于该位置的概率;
 

tf.sparse_softmax()函数

将softmax应用于批量的N维SparseTensor。

tf.nn.leaky_relu()函数

tf.nn.leaky_relu(
        features,    features:一个Tensor,表示预激活
        alpha=0.2,  alpha:x<0时激活函数的斜率
        name=None)  操作的名称(可选)
参数:


返回值:激活值

在这里插入图片描述

 优点:
1.能解决深度神经网络(层数非常多)的“梯度消失”问题,浅层神经网络(三五层那种)才用sigmoid 作为激活函数
2.它能加快收敛速度。

tf.nn optimization优化

tf.nn.dropout()函数

tf.nn.dropout()是tensorflow 将元素随机置零以防止过拟合的函数,它一般用于全连接层

tf.nn.dropout(
    x, rate, noise_shape=None, seed=None, name=None
)

dropout就是在不同的训练过程中随机扔掉一部分神经元。也就是让某个神经元的激活值以一定的概率p,让其停止工作,这次训练过程中不更新权值,也不参加神经网络的计算。但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了。

 但在测试及验证中:每个神经元都要参加运算,但其输出要乘以概率p。

Dropout对于正则化DNN模型很有用输入元素被随机设置为零(其他元素被重新缩放)。这鼓励每个节点独立使用,因为它不能依赖其他节点的输出。

更精确地:x的元素有rate概率设置为0

x = tf.ones([3, 5])
y = tf.nn.dropout(x, rate=0.5, seed=1)
 
print(x)
print(y)
------------------------------------
'''
tf.Tensor(
[[1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]
 [1. 1. 1. 1. 1.]], shape=(3, 5), dtype=float32)
tf.Tensor(
[[0. 2. 0. 0. 2.]
 [0. 0. 0. 2. 2.]
 [2. 0. 0. 0. 0.]], shape=(3, 5), dtype=float32)
'''

tf operations

tf calculations计算

加:tf.add( x,y, name=None):

最常见的情况,将x矩阵加到y矩阵上。

加:tf.nn.bias_add()函数

tf.nn.bias_add(value, bias, name=None)

将bias向量加到value矩阵上,是向量与矩阵的每一行进行相加,得到的结果和value矩阵大小相同。

加:tf.sparse_add()函数

两个稀疏张量相加,其中至少有一个是 SparseTensor.

sparse_add(
    a,
    b,
    thresh=0 )

加:tf.reduce_sum()函数

reduce_sum 应该理解为压缩求和,用于降维(是从维度上考虑的)

tf.reduce_sum(input_tensor,axis=None,keepdims=None,name=None,reduction_indices=None,keep_dims=None)

乘:tf.matmul()函数

# 2-D tensor `a`
a = tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3]) => [[1. 2. 3.]
                                                      [4. 5. 6.]]
# 2-D tensor `b`
b = tf.constant([7, 8, 9, 10, 11, 12], shape=[3, 2]) => [[7. 8.]
                                                         [9. 10.]
                                                         [11. 12.]]
c = tf.matmul(a, b) => [[58 64]
                        [139 154]]

乘:tf.sparse_tensor_dense_matmul()函数

用稠密矩阵B乘以SparseTensor矩阵A

import tensorflow as tf

'''
[[1,0],
 [0,1]]
'''
st = tf.SparseTensor(values=[1, 2], indices=[[0, 0], [1, 1]], dense_shape=[2, 2])
dt = tf.ones(shape=[2,2],dtype=tf.int32)
result = tf.sparse_tensor_dense_matmul(st,dt)
sess = tf.Session()
with sess.as_default():
    print(result.eval())

 print结果:
[[1 1]
[2 2]]

乘:tf.tensordot()函数

tf.tensordot()函数是tensorflow中tensor矩阵相乘的api,可以进行任意维度的矩阵相乘。

tf.transpose()转置函数

Defined in tensorflow/python/ops/array_ops.py.

# 'x' is [[1 2 3]  
#         [4 5 6]]  
tf.transpose(x) ==> [[1 4]  
                     [2 5]  
                     [3 6]] 

tf.set_shape()函数和reshape()函数

tensorflow中,张量具有静态形状动态形状

静态形状:创建一个张量或者由操作推导出一个张量时,初始状态的形状。

  • tf.Tensor.get_shape()函数,获取静态形状
  • tf.Tensor.set_shape()函数,用于更新tensor对象的静态形状shape,通常用于在不能直接推断的情况下。

动态形状:一种描述原始张量在执行过程中的形状(动态变化)

  • reshape,用于动态地创建一个具有不同shape的新的tensor

tf.sparse_reshape()函数

重塑一个SparseTensor以表示新密集形状中的值。

tf.squeeze()函数

def squeeze(input, axis=None, name=None, squeeze_dims=None)

tf.squeeze()函数返回一个张量,这个张量是将原始input中所有维度为1的那些维都删掉

# 't' is a tensor of shape [1, 2, 1, 3, 1, 1]
  tf.shape(tf.squeeze(t))  # [2, 3]

tf.expand_dims()函数

tf.expand_dims(
    input, axis=None, name=None, dim=None)

  • input:输入,tensor类型
  • axis:增加维度的位置,比如:0表示在input的第一维增加一维,shape(a)=[2,3],操作之后数据维度为[1,2,3]。如果是1,shape=[2,1,3]
  • name:操作的名称(可选)。

tf.concat()函数

tf.concat([tensor1, tensor2, tensor3,...], axis)

axis=0     代表在shape第0个维度上拼接

axis=1     代表在shape第1个维度上拼接 

  t1 = [[1, 2, 3], [4, 5, 6]]
  t2 = [[7, 8, 9], [10, 11, 12]]
  tf.concat([t1, t2], 0)  # [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
  tf.concat([t1, t2], 1)  # [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]
 
  # tensor t3 with shape [2, 3]
  # tensor t4 with shape [2, 3]
  tf.shape(tf.concat([t3, t4], 0))  # [4, 3]
  tf.shape(tf.concat([t3, t4], 1))  # [2, 6]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23319.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

scratch踢足球 电子学会图形化编程scratch等级考试一级真题和答案解析2022年9月

目录 scratch踢足球 一、题目要求 1、准备工作 2、功能实现 二、案例分析

代码随想录算法训练营第三十九天| LeetCode62. 不同路径、LeetCode63. 不同路径 II

一、LeetCode62. 不同路径 1&#xff1a;题目描述&#xff08;62. 不同路径&#xff09; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下…

python 视角下的 6 大程序设计原则

众所周知&#xff0c;python 是面向对象的语言。 但大多数人学习 python 只是为了写出“能够实现某些任务的自动化脚本”&#xff0c;因此&#xff0c;python 更令人熟知的是它脚本语言的身份。 那么&#xff0c;更近一步&#xff0c;如果使用 python 实现并维护一个大的项目…

基于SpringBoot的CSGO赛事管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SpringBoot 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目…

为研发效能而生|一场与 Serverless 的博弈

2022 年 11 月 3 日&#xff0c;第三届云原生编程挑战赛即将迎来终极答辩&#xff0c;18 支战队、32 位云原生开发者入围决赛&#xff0c;精彩即将开启。 云原生编程挑战赛项目组特别策划了《登顶之路》系列选手访谈&#xff0c;期待通过参赛选手的故事&#xff0c;看到更加生…

第1章 计算机系统概述

1.1 操作系统的基本概念 1.1.1 操作系统的概念 操作系统是计算机系统中最基本的系统软件。 操作系统&#xff08;Operating System&#xff0c;OS&#xff09;是指控制和管理整个计算机系统的硬件与软件资源&#xff0c;合理地组织、调度计算机的工作与资源的分配&#xff0c;进…

锐捷端口安全实验配置

端口安全分为IPMAC绑定、仅IP绑定、仅MAC绑定 配置端口安全是注意事项 如果设置了IPMAC绑定或者仅IP绑定&#xff0c;该交换机还会动态学习下联用户的MAC地址 如果要让IPMAC绑定或者仅IP绑定的用户生效&#xff0c;需要先让端口安全学习到用户的MAC地址&#xff0c;负责绑定不生…

如何参与一个开源项目!

今天教大家如何给开源项目提交pr&#xff0c;成为一名开源贡献者。pr是 Pull Request 的缩写&#xff0c;当你在github上发现一个不错的开源项目&#xff0c;你可以将其fork到自己的仓库&#xff0c;然后再改动一写代码&#xff0c;再提交上去&#xff0c;如果项目管理员觉得你…

【建议收藏】回收站数据恢复如何操作?3个方案帮你恢复删除的文件

在使用电脑时&#xff0c;我们经常会清理不需要的文件数据。电脑回收站被清空了&#xff0c;但是里面有我们重要的数据&#xff0c;回收站数据恢复如何操作&#xff1f;不如试试下面的3个方案&#xff0c;一起来了解一下回收站数据恢复吧&#xff01; 一、注册表恢复回收站数据…

电脑视频转换成mp4格式,视频格式转换器转换

怎么把电脑视频转换成mp4格式&#xff1f;使用视频转换器&#xff0c;可以转换来自各种设备的音视频格式&#xff0c;包括相机、手机、视频播放器、电视、平板电脑等。因此&#xff0c;音视频爱好者都可以使用它在各种设备上播放或在社交平台上分享。 主要人群及作用&#xff1…

BHQ-2 NHS,916753-62-3作为各种荧光共振能量转移DNA检测探针中淬灭部分

英文名称&#xff1a;BHQ-2 NHS CAS&#xff1a;916753-62-3 外观&#xff1a;深紫色粉末 分子式&#xff1a;C29H29N7O8 分子量&#xff1a;603.59 储存条件&#xff1a;-20C&#xff0c;在黑暗中 结构式&#xff1a; 凯新生物产品简介&#xff1a; 黑洞猝灭剂-2&#…

pytorch初学笔记(九):神经网络基本结构之卷积层

目录 一、torch.nn.CONV2D 1.1 参数介绍 1.2 stride 和 padding 的可视化 1.3 输入、输出通道数 1.3.1 多通道输入 1.3.2 多通道输出 二、卷积操作练习 2.1 数据集准备 2.2 自定义神经网络 2.3 卷积操作控制台输出结果 2.4 tensorboard可视化 三、完整代码 一、torc…

NestJS 使用体验 | 不如 Spring Boot

本博客站点已全量迁移至 DevDengChao 的博客 https://blog.dengchao.fun , 后续的新内容将优先在自建博客站进行发布, 欢迎大家访问. 文章目录前言正文开发体验运行体验总结相关内容推广前言 公司里近期在尝试部署一些业务到阿里云的函数计算上, 受之前迁移已有的 Spring Boot…

TestStand-调试VI

文章目录调试VI调试VI 在LabVIEW PASS/FAIL TEST步骤中放置一个断点。 ExecuteRun MainSequence。执行在LabVIEW PASS/FAIL处暂停测试步骤。 3.完成以下步骤来调试LabVIEW PASS/FAIL TEST VI步骤。 a.在TestStand的调试工具栏上单击step into&#xff08;步进&#xff09;…

System V IPC+消息队列

多进程与多线程 使用有名管道实现双向通信时&#xff0c;由于读管道是阻塞读的&#xff0c;为了不让“读操作”阻塞“写操作”&#xff0c;使用了父子进程来多线操作&#xff0c; 1&#xff09;父进程这条线&#xff1a;读管道1 2&#xff09;子进程这条线&#xff1a;写管道2…

【二叉树的顺序结构:堆 堆排序 TopK]

努力提升自己&#xff0c;永远比仰望别人更有意义 目录 1 二叉树的顺序结构 2 堆的概念及结构 3 堆的实现 3.1 堆向下调整算法 3.2 堆向上调整算法 3.3堆的插入 3.4 堆的删除 3.5 堆的代码实现 4 堆的应用 4.1 堆排序 4.2 TOP-K问题 总结&#xff1a; 1 二叉树的顺序结…

分享几招教会你怎么给图片加边框

大家平时分享图片的时候&#xff0c;会不会喜欢给照片加点装饰呢&#xff1f;比如加些边框、文字或者水印之类的。我就喜欢给图片加上一些边框&#xff0c;感觉加了边框的照片像裱在相框中的感觉似的&#xff0c;非常有趣。那么你知道如何给图片加边框吗&#xff1f;不知道的话…

【Nginx】01-什么是Nginx?Nginx技术的功能及其特性介绍

目录1. 介绍1.1 常见服务器的对比1&#xff09;IIS2&#xff09;Tomcat3&#xff09;Apache4&#xff09;Lighttpd1.2 Nginx的优点(1) 速度更快、并发更高(2) 配置简单、扩展性强(3) 高可靠性(4) 热部署(5) 成本低、BSD许可证2. Nginx常用功能2.1 基本HTTP服务2.2 高级HTTP服务…

华为数通2022年11月 HCIP-Datacom-H12-821 第二章

142.以下关于状态检测防火墙的描述&#xff0c;正确是哪一项&#xff1f; A.状态检测防火墙需要对每个进入防火墙的数据包进行规则匹配 B.因为UDP协议为面向无连接的协议&#xff0c;因此状态检测型防火墙无法对UDP报文进行状态表的匹配 C.状态检测型防火墙只需要对该连接的第一…

性能测试-CPU性能分析,IO密集导致系统负载高

目录 IO密集导致系统负载高 使用top命令-观察服务器资源状态 使用vmstat命令-观察服务器资源状态 使用pidstat命令-观察服务器资源状态 使用iostat命令-观察服务器资源状态 IO密集导致系统负载高 stress-ng -i 10 --hdd 1 --timeout 100-i :有多少个工作者进行&#…