常见API
str.split(分隔符,分隔次数)通过指定分隔符对字符串进行切片,返回分割后的字符串列表
str.strip([指定的字符序列])方法用于移除字符串头尾指定的字符(默认为空格)或字符序列,返回生成的新字符串
str.join(sequence)用于将序列中的元素以指定的字符连接生成一个新的字符串
tf.random_uniform() ((6, 6), minval=low,maxval=high,dtype=tf.float32)))返回6*6的矩阵,产生于low和high之间,产生的值是均匀分布的
tf.tile(input,multiples<某一维度上复制的次数>,name=None)
tf.concat([tensor1, tensor2,...], axis)在指定轴上拼接张量
tf.reshape()可以用来增加维度
tf.truncated_normal(shape,mean均值,stddev标准差)此函数产生的随机数与均值的差距不会超过两倍的标准差
enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 下标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据。
>>>x = set('runoob')
>>> y = set('google')
>>> x, y
(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重复的被删除
基本概念
特殊张量:
常量是始终会返回同一张量值的指令。x = tf.constant([5.2])
变量是会返回分配给它的任何张量的指令。y = tf.Variable([5]), 创建变量时,您可以明确设置一个初始值,也可以使用初始化程序(例如分布)。 要更改变量的值,请使用 assign 操作, 向变量赋予新值时,其形状必须和之前的形状一致。
TensorFlow 编程本质上是一个两步流程:
(1)将常量、变量和指令整合到一个图中。
(2)在一个会话中评估这些常量、变量和指令。
形状用于描述张量维度的大小和数量。张量的形状表示为 list,其中第 i 个元素表示维度 i 的大小。列表的长度表示张量的阶(即维数)。matrix0 = tf.zeros([2, 2]),形状(shape)也可以用元组表示。(None表示可变长度)
0阶张量(常数)的形状= []
s_1_flex = [None]
s_2_flex = (None, 3)
s_3_flex = [2, None, None]
以下代码展示了如何创建大小与给定矩阵中的列数相同的零矢量:
zeros = tf.zeros(my_matrix.shape[1])
在数学中,您只能对形状相同的张量执行元素级运算(例如,相加和等于)。不过,在 TensorFlow 中,您可以对张量执行传统意义上不可行的运算。利用广播,元素级运算中的较小数组会增大到与较大数组具有相同的形状。
我们使用一种称为“特征列”的结构来表示特征的数据类型。特征列仅存储对特征数据的描述;不包含特征数据本身。
batch_size:此整数指定每个批次的大小。请注意,如果样本总数不能被批次大小整除,则最后一个批次可能更小。
pandas
DataFrame(数据框架),您可以将它想象成一个关系型数据表格,其中包含多个行和已命名的列。
Series,它是单一列。DataFrame 中包含一个或多个 Series,每个 Series 均有一个名称。
高阶API: keras的使用
低阶API:张量、变量、图表、会话的使用(适当的使用低阶API,实验和调试都会更直接,且能够理解其内部工作原理)
您可以将 TensorFlow Core 程序看作由两个互相独立的部分组成:
1.构建计算图 (tf.Graph)
2.运行计算图(使用 tf.Session)
图:
计算图是排列成一个图的一系列 TensorFlow 指令。图由两种类型的对象组成 :
1、操作(简称“op”):图的节点。操作描述了消耗和生成张量的计算
2、张量:图的边。它们代表将流经图的值。大多数 TensorFlow 函数会返回 tf.Tensors
会话:
会话会封装 TensorFlow 运行时的状态,并运行 TensorFlow 操作。如果说 tf.Graph 像一个 .py 文件,那么 tf.Session 就像一个 python 可执行对象。
当您使用 Session.run 请求输出节点时,TensorFlow 会回溯整个图,并流经提供了所请求的输出节点对应的输入值的所有节点。
您可以将多个张量传递给 tf.Session.run。run 方法以透明方式处理元组或字典的任何组合。它返回的结果拥有相同的布局结构。
创建会话对象后,可以使用 sess.run (node) 返回节点的值,并且 Tensorflow 将执行确定该值所需的所有计算。
我们还可以传递一个列表,sess.run ([node1,node2,...]),并让它返回多个输出
一般来说,sess.run () 调用往往是最大的 TensorFlow 瓶颈之一,所以调用它的次数越少越好。可以的话在一个 sess.run () 调用中返回多个项目,而不是进行多个调用。
Tensorflow 仅通过必需的节点自动路由计算这一事实是它的巨大优势。如果计算图非常大并且有许多不必要的节点,它就能节约大量运行时间。
在深度学习中,典型的“内循环”训练如下:
获取输入和 true_output
根据输入和参数计算出一个“猜测”
根据猜测和 true_output 之间的差异计算出一个“损失”
根据损失的梯度更新参数