四时宝库

程序员的知识宝库

Tensorflow中的基本用法(tensorflow中的tensor)

x=tf.linspace(-3.0,3.0,100),tf.linspace()称为操作,任何一次操作的结果都得到Tensor

print(x) 输出:Tensor("LinSpace:0", shape=(100,), dtype=float32)返回值是一个Tensor,不是数值,其中"LinSpace:0"是Tensor的名字,表示LinSpace空间的第0个输出!

查看默认图及其操作g=get_default_graph(),[op.name for op in g.get_operations()]

输出:['LinSpace/start', 'LinSpace/stop', 'LinSpace/num', 'LinSpace']

通过名字访问任何张量的输出g.get_tensor_by_name("Linspace"+":0")

输出:<tf.Tensor 'LinSpace:0' shape=(100,) dtype=float32>

运行时先启动session,最后关闭session:sess=tf.Session(), print(sess.run(x)),sess.close()

输出:[-3. -2.939394 -2.87878799 ……]

管理图sess=tf.Session(graph=g),sess.close(),关闭默认图。

创建新图g2=tf.Graph()

简化输出过程,使用以下命令:

  • sess=tf.InteractiveSession()

  • x.eval()

  • 输出:array([-3. , -2.939394 ,……],dtype=float32)

得到张量的shape

  • print(x.get_shape()) 输出:(100,)

  • print(x.get_shape().as_list())输出:[100]

创建一个标准正态分布:

  • mean=0

  • sigma=1

  • f=1.0/(tf.sqrt(2*3.1415)*sigma)*tf.exp(-0.5*tf.pow(x-mean,2)/tf.pow(sigma,2))

  • res=f.eval()

  • plt.plot(x,res)

  • 输出:一个高斯图形

注意:如果图形、图像没显示,添加%matplotlib inline

使用f(高斯函数)创建一个2D高斯核

  • ksize=f.get_shape().as_list()[0]

  • z_2d=tf.matmul(tf.reshape(f,[ksize,1]),tf.reshape(f,[1,ksize))

  • tf.matul是两个矩阵乘积;tf.reshape(arg1,arg2),将arg1转变成arg2的形式,如arg2=[a,b],即位a行,b列的矩阵

  • plt.imshow(z_2d.eval())画出图形。

用高斯函数来进行图像的卷积(“卷积”我们先理解成过滤图像信息的工具)

使用tensorflow对图像做卷积,图像必须是4D的,即是将不是4D的转变成4D=N x H x W x C,使用tf.reshape(原始对象,目标对象),目标对象是个list[, , , ,]

高斯核也要转变成4D的,[Kernel Height,Kernel Width,Number of Input Channels,Number of Output Channels]

  • z_4d = tf.reshape(z_2d, [ksize, ksize, 1, 1])

  • print(z_4d.get_shape().as_list()) 输出:[ksize, ksize, 1, 1]

  • The number of input channels should match the number of channels on the image we want to convolve.

使用高斯核过滤图像

  • 使用tf.nn.conv2d(被卷积图像,卷积核,strides=[],padding=" ")

  • convolved = tf.nn.conv2d(img_4d, z_4d, strides=[1, 1, 1, 1], padding='SAME')

  • res = convolved.eval()

  • print(res.shape)

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接