tf.placeholder
placeholder,占位符佳励,在tensorflow中類似于函數(shù)參數(shù)季研,運行時必須傳入值。
tf.placeholder(dtype, shape=None, name=None)
- dtype:數(shù)據(jù)類型狮惜。常用的是tf.int32高诺,tf.float32,tf.float64碾篡,tf.string等數(shù)據(jù)類型
- shape:數(shù)據(jù)形狀虱而。默認是None,也就是一維值开泽。也可以表示多維比如要表示2行3列則應設為[2, 3]牡拇,形如[None, 3]表示列是3,行不定眼姐。
- name:名稱诅迷。
例:
tf.placeholder(tf.float32, shape=(None, 1024))
1024是指的數(shù)據(jù)的尺寸,None指的batch size的大小众旗,所以可以是任何數(shù)。
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()
創(chuàng)建變量
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:創(chuàng)建變量的初始化器趟畏。如果初始化器為 None(默認)贡歧,則將使用在變量范圍內(nèi)傳遞的默認初始化器(如果另一個也是 None,那么一個 glorot_uniform_initializer (也稱之為Xavier uniform initializer)將被使用)赋秀。glorot_uniform_initializer
函數(shù)從均勻分布初始化值.
兩者區(qū)別:使用tf.Variable時利朵,如果檢測到命名沖突,系統(tǒng)會自己處理猎莲。使用tf.get_variable()時绍弟,系統(tǒng)不會處理沖突,而會報錯著洼。
基于此樟遣,當我們需要共享變量的時候,需要使用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()就是根據(jù)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)
功能:平均池化然遏,求平均值
參數(shù)1--input_tensor:待求值的tensor贫途。
參數(shù)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ǎng)絡中的部分神經(jīng)元丢早,從而減小對W權(quán)重的依賴,以達到減小過擬合的效果秧倾。
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)
功能:類型轉(zhuǎn)換
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 )
比較重要的幾個參數(shù)是inputs, filters, kernel_size
- inputs : 輸入tensor, 維度(None, a, b) 是一個三維的tensor
- None:一般是填充樣本的個數(shù)揖闸,batch_size
- a:句子中的詞數(shù)或者字數(shù)
- b:字或者詞的向量維度
- filters : 過濾器的個數(shù)
- 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.