tf.placeholder
placeholder,占位符,在tensorflow中类似于函数参数,运行时必须传入值。
tf.placeholder(dtype, shape=None, name=None)
- dtype:数据类型。常用的是tf.int32,tf.float32,tf.float64,tf.string等数据类型
- shape:数据形状。默认是None,也就是一维值。也可以表示多维比如要表示2行3列则应设为[2, 3],形如[None, 3]表示列是3,行不定。
- name:名称。
例:
tf.placeholder(tf.float32, shape=(None, 1024))
1024是指的数据的尺寸,None指的batch size的大小,所以可以是任何数。
tf.device
tf.device(device_name_or_function)
TensorFlow 支持 CPU 和 GPU 这两种设备,它们均用 strings 表示,例如:
- "/cpu:0":机器的 CPU
- "/device:GPU:0":机器的 GPU(如果有一个)
- "/device:GPU:1":机器的第二个 GPU(以此类推)
tf.Variable与tf.get_variable()
创建变量
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.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)
initializer:创建变量的初始化器。如果初始化器为 None(默认),则将使用在变量范围内传递的默认初始化器(如果另一个也是 None,那么一个 glorot_uniform_initializer (也称之为Xavier uniform initializer)将被使用)。glorot_uniform_initializer
函数从均匀分布初始化值.
两者区别:使用tf.Variable时,如果检测到命名冲突,系统会自己处理。使用tf.get_variable()时,系统不会处理冲突,而会报错。
基于此,当我们需要共享变量的时候,需要使用tf.get_variable()
tf.variable_scope和tf.name_scope
tf.variable_scope可以让变量有相同的命名,包括tf.get_variable得到的变量,还有tf.Variable的变量
tf.name_scope可以让变量有相同的命名,只是限于tf.Variable的变量
tf.nn.embedding_lookup
tf.nn.embedding_lookup(params, ids, partition_strategy="mod", name=None, validate_indices=True, max_norm=None)
tf.nn.embedding_lookup()就是根据input_ids中的id,寻找embeddings中的第id行。比如input_ids=[1,3,5],则找出embeddings中第1,3,5行,组成一个tensor返回。
tf.layers.conv1d
tf.layers.conv1d(inputs, filters, kernel_size, strides=1, padding='valid', data_format='channels_last', dilation_rate=1, activation=None, use_bias=True, kernel_initializer=None, bias_initializer=init_ops.zeros_initializer(), kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None, trainable=True, name=None, reuse=None)
conv1d:一维卷积层(即时域卷积),所谓的一维卷积可以看作是二维卷积(conv2d)的简化,二维卷积是将一个特征图在width和height两个方向上进行滑窗操作,对应位置进行相乘并求和;而一维卷积则是只在width或者说height方向上进行滑窗并相乘求和。
tf.reduce_max和tf.reduce_mean
tf.reduce_max(input_tensor, axis=None, keepdims=None, name=None, reduction_indices=None, keep_dims=None)
功能:最大池化,求最大值
tf.reduce_mean(input_tensor, reduction_indices=None, keep_dims=False, name=None)
功能:平均池化,求平均值
参数1--input_tensor:待求值的tensor。
参数2--reduction_indices:在哪一维上求解。
tf.layers.dense
tf.layers.dense(inputs, units, activation=None, use_bias=True, kernel_initializer=None, bias_initializer=init_ops.zeros_initializer(), kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None, trainable=True, name=None, reuse=None)
功能:添加一层,全连接层
tf.layers.dropout
tf.layers.dropout(inputs, rate=0.1, noise_shape=None, seed=None, training=False)
功能:随机的拿掉网络中的部分神经元,从而减小对W权重的依赖,以达到减小过拟合的效果。
rate: The dropout rate, between 0 and 1. E.g. "rate=0.1" would drop out 10% of input units.
tf.argmax
tf.argmax(input, axis=None, name=None, dimension=None, output_type=dtypes.int64)
axis = 0的时候返回每一列最大值的位置索引
axis = 1的时候返回每一行最大值的位置索引
axis = 2、3、4...,即为多维张量时,同理推断
tf.cast
tf.cast(x, dtype, name=None)
功能:类型转换
tf.layers.conv1d
一维卷积,一般用于处理文本,所以输入一般是一段长文本,就是词的列表
tf.layers.conv1d( inputs, filters, kernel_size, strides=1, padding='valid', data_format='channels_last', 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, name=None, reuse=None )
比较重要的几个参数是inputs, filters, kernel_size
- inputs : 输入tensor, 维度(None, a, b) 是一个三维的tensor
- None:一般是填充样本的个数,batch_size
- a:句子中的词数或者字数
- b:字或者词的向量维度
- filters : 过滤器的个数
- kernel_size : 卷积核的大小,卷积核其实应该是一个二维的,这里只需要指定一维,是因为卷积核的第二维与输入的词向量维度是一致的,因为对于句子而言,卷积的移动方向只能是沿着词的方向,即只能在列维度移动
tf.reduce_max
返回最大值
tf.reduce_max(input_tensor, axis=None, keepdims=None, name=None, reduction_indices=None, akeep_dims=None)
axis:维度,若为None,则返回所有维度的最大值
reduction_indices: The old (deprecated) name for axis.