tf.nn.conv2d()
tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None)
参数:
- input : 输入的要做卷积的图片,要求为一个张量,shape为 [ batch, in_height, in_weight, in_channel ],其中batch为图片的数量,in_height 为图片高度,in_weight 为图片宽度,in_channel 为图片的通道数,灰度图该值为1,彩色图为3。(也可以用其它值,但是具体含义不是很理解)
- filter: 卷积核,要求也是一个张量,shape为 [ filter_height, filter_weight, in_channel, out_channels ],其中 filter_height 为卷积核高度,filter_weight 为卷积核宽度,in_channel 是图像通道数 ,和 input 的 in_channel 要保持一致,out_channel 是卷积核数量。
- strides: 卷积时在图像每一维的步长,这是一个一维的向量,[ 1, strides, strides, 1],第一位和最后一位固定必须是1
- padding: string类型,值为“SAME” 和 “VALID”,表示的是卷积的形式,是否考虑边界。”SAME”是考虑边界,不足的时候用0去填充周围,所得大小与卷积之前相同;”VALID”不考虑边界
- use_cudnn_on_gpu: bool类型,是否使用cudnn加速,默认为true
举例:
tf.nn.conv2d(x, W, strides=[1,1,1,1], padding=”SAME”)
tf.control_dependencies()
是一种流程控制函数,比如:1
2
3
4with tf.control_dependencies([a, b, c]):
# `d` and `e` will only run after `a`, `b`, and `c` have executed.
d = ...
e = ...
只有[a,b,c]都被执行了才会执行d和e操作,这样就实现了流的控制。
tf.identity()
1 | # 例1:x,y都是variable,y不会参与到x的流程计算中 |
0.0
0.0
0.0
0.0
0.0
1 | #例2:y变成op Tensor,可以参与流程 |
Tensor(“Identity_3:0”, shape=(), dtype=float32, device=/device:CPU:0)
1.0
2.0
3.0
4.0
5.0
总结:tf.identity()可以让简单赋值y = x中的y变成和x相同size的op,只需y = tf.identity(x),便可和x一样参数等价的流程运算;也可以对自己使用x = tf.identity(x)直接把自己升级成op
tf.train.shuffle_batch()
1、函数定义tf.train.shuffle_batch(tensor_list, batch_size, capacity, min_after_dequeue, num_threads=1, seed=None, enqueue_many=False, shapes=None,name=None)
2、参数说明:
capacity:队列的长度
min_after_dequeue:出队后,队列至少剩下min_after_dequeue个数据
3、例子:1
2
3
4
5
6
7# Creates batches of 32 images and 32 labels.
image_batch, label_batch = tf.train.shuffle_batch(
[single_image, single_label],
batch_size=32,
num_threads=4,
capacity=50000,
min_after_dequeue=10000)