TensorFlow各种操作汇总

TensorFlow各种操作

一图看懂tensorflow核心概念和流程
https://zhuanlan.zhihu.com/p/33801947

一个框架看懂优化算法之异同
https://zhuanlan.zhihu.com/p/32230623

详解深度学习中的normalization
https://zhuanlan.zhihu.com/p/33173246
https://yq.aliyun.com/articles/443058

tf.multiply和tf.matmul
tf.multiply()两个矩阵中对应元素各自相乘
tf.matmul()将矩阵a乘以矩阵b,生成a * b

使用tf.Variable时,如果检测到命名冲突,系统会自己处理。使用tf.get_variable()时,系统不会处理冲突,而会报错
tf.get_variable(name, shape=None, dtype=None, initializer=None, regularizer=None,
trainable=True, collections=None, caching_device=None, partitioner=None, validate_shape=True,
custom_getter=None)
tf.Variable(initial_value=None, trainable=True, collections=None, validate_shape=True,
caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None,
import_scope=None)

tf.expand_dims(input, dim, name=None)
Dim表示加到位置的索引,当dim=-1时,加在最后。
TensorFlow中,想要维度增加一维,可以使用tf.expand_dims(input, dim, name=None)函数。当然,我们常用tf.reshape(input, shape=[])也可以达到相同效果,但是有些时候在构建图的过程中,placeholder没有被feed具体的值,这时就会包下面的错误:TypeError: Expected binary or unicode string, got 1 
在这种情况下,我们就可以考虑使用expand_dims来将维度加1。

tf.squeeze()
从tensor中删除所有大小是1的维度

sess=tf.Session() 和with tf.Session() as sess的区别
https://blog.csdn.net/weixin_43224696/article/details/83349292

tf.nn.relu()函数是将大于0的数保持不变,小于0的数置为0

tf.nn.dropout()
https://blog.csdn.net/yangfengling1023/article/details/82911306
batch normalization原理与实战
输入分布不均—-Internal Covariate Shift,在神经网络的训练过程中对每层的输入数据加一个标准化处理。
Batch Normalization给隐藏层增加了噪音,有一定的正则化效果。
https://zhuanlan.zhihu.com/p/34879333

tensorflow中eval函数:
https://blog.csdn.net/jiaoyangwm/article/details/79248535
eval() 其实就是tf.Tensor的Session.run() 的另外一种写法,但两者有差别
eval(): 将字符串string对象转化为有效的表达式参与求值运算返回计算结果
eval()也是启动计算的一种方式。基于Tensorflow的基本原理,首先需要定义图,然后计算图,其中计算图的函数常见的有run()函数,如sess.run()。同样eval()也是此类函数,
要注意的是,eval()只能用于tf.Tensor类对象,也就是有输出的Operation。对于没有输出的Operation, 可以用.run()或者Session.run();Session.run()没有这个限制。
这其中最主要的区别就在于你可以使用sess.run()在同一步获取多个tensor中的值,

tf.sequence_mask(lengths,maxlen=None,dtype=tf.bool,name=None)
函数参数
lengths:整数张量,其所有值小于等于maxlen。
maxlen:标量整数张量,返回张量的最后维度的大小;默认值是lengths中的最大值。
dtype:结果张量的输出类型。
name:操作的名字。
import tensorflow as tf
a=tf.sequence_mask([1],2)
sess=tf.Session()
sess.run(tf.Print(a,[a]))

array([[True,False]],dtype=bool)
tf.sequence_mask([1, 3, 2], 5) # [[True, False, False, False, False],

                            #  [True, True, True, False, False],
                            #  [True, True, False, False, False]]

tf.sequence_mask([[1, 3],[2,0]]) # [[[True, False, False],
# [True, True, True]],
# [[True, True, False],
# [False, False, False]]]

tf.slice() 切割多维数组

import tensorflow as tf
a=tf.constant([[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]],[[5,5,5],[6,6,6]]])
tf.slice(a,[1,0,0],[1,1,3])
<tf.Tensor ‘Slice:0’ shape=(1, 1, 3) dtype=int32>

print(a)
Tensor(“Const:0”, shape=(3, 2, 3), dtype=int32)

tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换

tf.get_collection(key,scope=None)
用来获取一个名称是‘key’的集合中的所有元素,返回的是一个列表,列表的顺序是按照变量放入集合中的先后;

tensorflow中有一个计算梯度的函数tf.gradients(ys, xs),要注意的是,xs中的x必须要与ys相关,不相关的话,会报错。

tensorflow中打印tensor
import tensorflow as tf
dim=32
std=np.sqrt(2/dim)
res=tf.random_uniform([12,dim],-std,std)
session=tf.Session()
session.run(tf.Print(res,[res]))

tensorflow生成随机数tf.random_normal和tf.random_uniform和tf.truncated_normal和tf.random_shuffle
tf.random_normal,从正态分布中输出随机值。
tf.random_uniform,从均匀分布中返回随机值。
tf.truncated_normal,截断的正态分布函数。生成的值遵循一个正态分布,但不会大于平均值2个标准差
tf.random_shuffle,沿着要被洗牌的张量的第一个维度,随机打乱。
https://blog.csdn.net/tz_zs/article/details/75948350

理解tensorflow中session
Session 是 Tensorflow 为了控制,和输出文件的执行的语句. 运行 session.run() 可以获得你要得知的运算结果, 或者是你所要运算的部分.
因为 product 不是直接计算的步骤, 所以我们会要使用 Session 来激活 product 并得到计算结果.

tf.global_variables_initializer
使用tf.global_variables_initializer()添加节点用于初始化所有的变量。在你构建完整个模型并在会话中加载模型后,运行这个节点。

.ckpt文件与.ckpt.meta和.ckpt.index以及.pb文件之间的关系是什么?

  • .ckpt文件是旧版本的输出saver.save(sess),相当于你的.ckpt-data(见下文)
  • “checkpoint”文件仅用于告知某些TF函数,这是最新的检查点文件。
  • .ckpt-meta 包含元图,即计算图的结构,没有变量的值(基本上你可以在tensorboard / graph中看到)。
  • .ckpt-data包含所有变量的值,没有结构。要在python中恢复模型,您通常会使用元数据和数据文件(但您也可以使用该.pb文件): saver = tf.train.import_meta_graph(path_to_ckpt_meta) saver.restore(sess, path_to_ckpt_data)
  • 我不确切地知道.ckpt-index,我想这是内部需要的某种索引来正确映射前两个文件。无论如何,它通常不是必需的,你可以只用.ckpt-meta和恢复一个模型.ckpt-data。
  • 该.pb文件可以保存您的整个图表(元+数据)。要在c ++中加载和使用(但不训练)图形,您通常会使用它来创建freeze_graph,它会.pb从元数据和数据创建文件。要小心,(至少在以前的TF版本和某些人中)py提供的功能freeze_graph不能正常工作,所以你必须使用脚本版本。Tensorflow还提供了一种tf.train.Saver.to_proto()方法,但我不知道它究竟是做什么的。

opt = tf.train.AdamOptimizer(learning_rate=0.01)
init(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False, name=‘Adam’)
此函数是Adam优化算法:是一个寻找全局最优点的优化算法,引入了二次方梯度校正。
相比于基础SGD算法,1.不容易陷于局部优点。2.速度更快

使用tensorflow搭建简单的全连接神经网络
https://blog.csdn.net/zhangcheng_95/article/details/81260685

train_rmse = wals.get_rmse(output_row, output_col, Gmat)
均方根误差,也成标准误差

tf.reduce_sum(a,0 or 1 or 2)
当arg2等于2时,实际在走下图中对角线方向进行计算

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DataFrame是Pandas库中的一种数据结构,用于处理和分析结构化数据。而TensorFlow是一个开源的机器学习框架,用于构建和训练机器学习模型。DataFrames和TensorFlow数据集可以一起使用,以便在数据处理和模型训练之间实现无缝的集成。 首先,可以使用Pandas库将数据加载到DataFrame中,然后对数据进行清洗、转换和探索性分析。DataFrame提供了各种功能,如数据过滤、排序、合并和统计汇总,可以简化对数据的操作和处理。 然后,可以将DataFrame中的数据转换为TensorFlow数据集,以便在TensorFlow中进行模型训练。TensorFlow提供了一个tf.data模块,用于创建和处理大规模的数据集。可以使用tf.data.Dataset.from_tensor_slices()函数将DataFrame转换为TensorFlow数据集。 在TensorFlow中,可以使用Dataset API提供的方法对数据集进行处理和转换,例如批处理、重复、随机化等。这些方法可以帮助我们准备用于训练的数据集,并确保数据在每个训练轮次中都能以随机的顺序传递给模型。 最后,可以使用TensorFlow构建和训练机器学习模型,通过迭代训练数据集中的样本来调整模型的权重和参数。利用DataFrame和TensorFlow数据集的集成,可以更好地管理和处理数据,提高模型训练的效率和准确性。 总之,DataFrame和TensorFlow数据集的结合可以提供一个完整的数据处理和模型训练的工作流程,使数据科学家和机器学习工程师能够更方便、高效地处理和分析结构化数据,并训练准确可靠的机器学习模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值