tf.device() 指定tensorflow运行的GPU或CPU设备
tf.name.scope() 相当于 将定义的几个变量 放到一个“文件夹” 中。里面的参数就会“文件夹”的名字。
tf.Variable()用于生产一个初始值为initial_value的变量,必须指定初始化值。
tf.get_variable()可获取已存在的变量也可创建一个不存在的变量,必须有名字,并且定义初始化方式等各个参数。
初始化方式:
tf.constant_initializer:常量初始化函数
tf.random_normal_initializer:正态分布
tf.truncated_normal_initializer:截取的正态分布
tf.random_uniform_initializer:均匀分布
tf.zeros_initializer:全部是0
tf.ones_initializer:全是1
tf.uniform_unit_scaling_initializer:满足均匀分布,但不影响输出数量级的随机值
tf.nn.rnn_cell.DropoutWrapper(cell, input_keep_prob , output_keep_prob) 使神经网络层的输入可以做dropout,输出也可以做dropout。cell=层的类型,一遍是RNNCell类型;input_keep_prob是一个概率,希望输入由多少神经元被保留,同理output。
tf.nn.rnn_cell.MultiRNNCell(cells,state_is_tuple = True)由多个简单的cells组成的RNN cell。用于构建多层循环神经网络。cells:RNNCells的list,state_is_tuple:如果为True,接受和返回的states是n-tuples。
tf.summary.scalar(tags, values, collections=None, name=None)用来显示标量信息,一般在画loss,accuary时会用到这个函数。
tf.truncated_normal()产生截断正态分布随机数,取值范围为 [ mean - 2 * stddev, mean + 2 * stddev ]
tf.nn.embedding_lookup()---选取一个张量里面索引对应的元素。
tf.nn.embedding_lookup(params, ids)
# params可以是张量也可以是数组等,id就是对应的索引
p=tf.Variable(tf.random_normal([5,1]))#生成10*1的张量
b = tf.nn.embedding_lookup(p, [1, 3])#查找张量中的序号为1和3的
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(b))
print(sess.run(p))
print(p)
print(type(p))
'''
[[ 0.10616682]
[-0.6046176 ]]
[[ 0.45999715]
[ 0.10616682]
[ 0.6207007 ]
[-0.6046176 ]
[ 2.7066622 ]]
<tf.Variable 'Variable:0' shape=(5, 1) dtype=float32_ref>
<class 'tensorflow.python.ops.variables.RefVariable'>
'''
tf.truncated_normal () ---产生截断正态分布随机数
truncated_normal(
shape, # 输出张量的维度
mean=0.0, # 均值
stddev=1.0, # 标准差
dtype=tf.float32,
seed=None, # 随机种子,若赋值,每次产生相同随机数
name=None
)
tf.nn.conv2d () ---生成卷积核
tf.nn.conv2d (
input, # 张量,shape = [ batch, in_height, in_weight, in_channel(灰度图为1,彩色图为3)]
filter, # 卷积核,一个张量,shape = [batch_size, in_height, in_weight, in_channel(要与input的channel一致),out_channels(卷积核数量)]
strides, # 卷积步长,一个张量,shape = [ 1, strides, strides, 1],第一位和最后一位固定必须是1
padding, # "SAME"是考虑边界,不足的时候用0去填充周围,"VALID"则不考虑
use_cudnn_on_gpu=None,
data_format=None,
name=None)
tf.nn.bias_add() ---将偏差项加到value上
tf.nn.bias_add(value, # 张量
bias, # 一个 1-D 的张量,大小与value的列的维度匹配
data_format=None,
name=None)
tf.nn.max_pool() ---最大池化操作
tf.nn.max_pool(value, # feature map,shape = [batch, height, width, channels]
ksize, # 池化窗口的大小,shape = [1, height, width, 1] ,因为在batch和channels上做池化,所以这两个维度设为了1
strides, # : 窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]
padding,
name=None)
tf.nn.dropout() --- 防止或减轻过拟合
tf.nn.dropout(
x, # 输入的张量
keep_prob, # 每个元素被保留下来的概率,在初始化时,设置这个概率
noise_shape=None, # 代表随机产生“保留/丢弃”标志
seed=None,
name=None
)
tf.constant(value,shape)--- 创建常数张量
tf.nn.max_pool(value, ksize, strides, padding, name=None)
tf.nn.max_pool(value, #需要池化的输入,一般池化层接在卷积层后面,所以输入通常是feature map,依然是[batch, height, width, channels]这样的shape
ksize, #池化窗口的大小,取一个四维向量,一般是[1, height, width, 1],因为我们不想在batch和channels上做池化,所以这两个维度设为了1
strides, # 和卷积类似,窗口在每一个维度上滑动的步长,一般也是[1, stride,stride, 1]
padding, # 和卷积类似,可以取'VALID' 或者'SAME'
name=None)
tf.placeholder()---分配内存,不放入数据
tf.placeholder(
dtype, # float32\float64
shape=None, # 默认为None,即一维张量,多维[None,784],行不定
name=None
)