美文网首页
TensorFlow常用函数

TensorFlow常用函数

作者: 奔跑的小菜鸟 | 来源:发表于2018-11-15 14:32 被阅读0次

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.

相关文章

网友评论

      本文标题:TensorFlow常用函数

      本文链接:https://www.haomeiwen.com/subject/ptcyfqtx.html