CNN中的Tensorflow基础
最近看了武大一个博士的FCN代码,第一次接触到tensorflow,也就开始了我的tensorflow学习之旅,以此来记录下,加深理解和记忆。先记录一些在代码中应用到得函数和操作,以后慢慢更新。
tf.placeholder
俗称占位符,允许后面提供一个值,类似函数功能。在对话框里需要给占位符喂入数据,才可启动图
*#创建一个占位符张量*
x = tf.placeholder(tf.float32,[1,None,None,4])
y = tf.placeholder(tf.float32, shape=[1,None,None,15])
idx1 = tf.placeholder(tf.int32, shape=None)
idx2 = tf.placeholder(tf.int32, shape=None)
idx3 = tf.placeholder(tf.int32, shape=None)
*给占位符喂数据*
sess.run(train_step,feed_dict={x:x_train,y:y_train,idx1:array1_train,idx2:array2_train,idx3:array3})
这个在CNN中多用作输入数据,比如训练集和标签
tf.constant
创建一个常量张量用于初始化偏置
b=tf.constant(0.,shape=shape)
多用作创建偏置
tf.random_uniform
从均匀分布中输出随机值,用于初始化权重
w= tf.random_uniform(shape,minval=0.01, maxval=0.02)
tf.Variable
Variable是一个类,可以创建一个变量实例。在CNN通常中创建权值和偏置
def weight_variable(shape,name=None):
initial = tf.random_uniform(shape,minval=0.01, maxval=0.02)
return tf.Variable(initial,name)
tf.nn.conv2d
计算一个四维输入和卷积核的二维卷积
args:
input: 四维张量,默认为[batch,height,width,channels]
filter:四维张量,默认为[height,width,channels,out_channels],前两个参数为卷积核大小,第三个为输入张量的通道,最后一个为输出张量的通道。
strides:步长,一个长度为4的张量,四个整数代表每一维的窗口滑动步长。
padding:填补。可取‘VALID’和‘SAME’ 。VALID不会在原有的输入基础上添加新像元,直接舍弃。‘SAME’会补零。
return tf.nn.conv2d(x, W, strides=[1, 1, 1, 1], padding='SAME')