TensorFlow安装教程与卷积神经网络模型构建

前言



本文主要介绍简单的TensorFlow安装以及一个卷积模型的小例子,便于读者理解。

TensorFlow安装与卷积模型_Java


1:Tensorflow 安装:

首先目前已学习的方法中有两种方法可用于安装TensorFlow:一是pip,二是Anaconda。

另外 TensorFlow还有cpu和Gpu两个版本。


使用pip安装

1)下载安装Python

2)打开windows的命令行窗口,安装CPU版本

pip installtensorflow

安装GPU版本

Pip install tensorflow-gpu

之后验证是否安装了 TensorFlow 可以尝试一下代码

>>> importtensorflow as tf

>>> hello = tf.constant('Hello, TensorFlow!')

>>> sess = tf.Session()

>>> print(sess.run(hello))

TensorFlow安装与卷积模型_Java_02

之后我们来稍微了解一下卷积模型。



2:卷积:(Convolution)是通过两个函数f 和g 生成第三个函数的一种数学算式,表征函数f 与g经过翻转和平移的重叠部分的面积。卷积是在信号与线性系统的基础上或背景中出现的,脱离这个背景单独谈卷积是没有任何意义的。信号与线性系统,讨论的就是信号经过一个线性系统以后发生的变化(就是输入输出和所经过的所谓系统,这三者之间的数学关系)。都是要根据我们需要待处理的信号形式,来设计所谓的系统传递函数,那么这个系统的传递函数和输入信号,在数学上的形式就是所谓的卷积关系。

先看一下卷积实现原理,对于in_c个通道的输入图,如果需要经过卷积后输出out_c个通道图,那么总共需要in_c * out_c个卷积核参与运算。

TensorFlow安装与卷积模型_Java_03

此图中输入的是一个5*5*4的表格,那么对应输出的每个通道,都需要其度与原表格一致即四个卷积核,而由于5*5的表格经过3*3卷积后可为一个3*3的子表格,所以,最后就是分为 3*4个卷积核。

举个栗子:

2个通道,5*5的输入定义如下:

input_data=[

             [[1,0,1,2,1],

              [0,2,1,0,1],

              [1,1,0,2,0],

              [2,2,1,1,0],

              [2,0,1,2,0]],


              [[2,0,2,1,1],

               [0,1,0,0,2],

               [1,0,0,2,1],

               [1,1,2,1,0],

               [1,0,1,1,1]],


           ]

卷积核,shape=[in_c,k,k]=[2,3,3]


weights_data=[

              [[ 1, 0, 1],

               [-1, 1, 0],

               [ 0,-1, 0]],

              [[-1, 0, 1],

               [ 0, 0, 1],

               [ 1, 1, 1]]

            ]

上面定义的数据,在接下来的计算对应关系将按下图所描述的方式进行。

TensorFlow安装与卷积模型_Java_04

defget_shape(tensor):

   [s1,s2,s3]= tensor.get_shape()

   s1=int(s1)

   s2=int(s2)

   s3=int(s3)

return s1,s2,s3

defchw2hwc(chw_tensor):

   [c,h,w]=get_shape(chw_tensor)

   cols=[]

for i in range(c):

       #每个通道里面的二维数组转为[w*h,1]即1列

       line = tf.reshape(chw_tensor[i],[h*w,1])

       cols.append(line)

   #横向连接,即将所有竖直数组横向排列连接

   input = tf.concat(cols,1)#[w*h,c]

   #[w*h,c]-->[h,w,c]

   input = tf.reshape(input,[h,w,c])

return input

同理,Tensorflow使用卷积核的时候,使用的格式是[k,k,in_c,out_c]。而我们在定义卷积核的时候,是按[in_c,k,k]的方式定义的,这里需要将[in_c,k,k]转为[k,k,in_c],由于为了简化工作量,我们规定输出为1个通道,即out_c=1。所以这里我们可以直接简单地对weights_data调用chw2hwc,再在第3维度扩充一下即可。

TensorFlow安装与卷积模型_Java_05

最后输出结果为:

[[ 2.  0.  2.  4.  0.]

[ 1.  4.  4.  3.  5.]

[ 4.  3.  5.  9. -1.]

[ 3.  4.  6.  2.  1.]

[ 5.  3.  5.  1. -2.]]


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空