人工智能深度学习入门练习之(27)TensorFlow – 例子:卷积神经网络(CNN)

卷积神经网络(CNN)旨在解决图像识别问题,卷积神经网络在图像识别、机器视觉等方面有着广泛的应用。这张杭州天际线的图片,可以看到很多建筑和颜色。那么计算机是如何处理这幅图像的呢?图像由像素组成,像素表示图像中的一个颜色点。例如,一个40×30的图像,表示宽40个像素,高30个像素,总共有1200个像素。根据色彩学原理,任何颜色都可由红、绿、蓝三种颜色混合组成,一个像素点被分成红、绿、蓝三种颜色分量,由这三个分量组合来表示任意颜色。对于黑白图像,只有一个分量,表示灰度。卷积神经网络和神经网络一样,是由具有可学习权值和偏差的神经元组成的。每个神经元接收几个输入,对它们进行加权求和,然后通过一个激活函数进行传递,经过多层神经元,最终输出结果。整个卷积神经网络有一个损失函数(代价函数/目标函数),我们为神经网络开发的所有技巧仍然适用于卷积神经网络。如前所述,图像实际上是由像素组成的二维矩阵,卷积神经网络所做的工作就是使用卷积、池化等操作从二维数组中提取特征,然后对图像进行识别。1962年Hubel和Wiesel通过对猫视觉皮层细胞的研究,提出了感受野(receptivefield)...

人工智能深度学习入门习之(26)TensorFlow – 例子:人工神经网络(ANN)

生物神经元人脑有数十亿个神经元。神经元是人脑中相互连接的神经细胞,参与处理和传递化学信号和电信号。以下是生物神经元的重要组成部分:树突 –从其他神经元接收信息的分支细胞核 –处理从树突接收到的信息轴突 –一种被神经元用来传递信息的生物电缆突触 –轴突和其他神经元树突之间的连接人脑神经元处理信息的过程:多个信号到达树突,然后整合到细胞体中,如果积累的信号超过某个阈值,就会产生一个输出信号,由轴突传递。人工神经元人工神经元是一个基于生物神经元的数学模型,神经元接受多个输入信息,对它们进行加权求和,再经过一个激活函数处理,然后将这个结果输出。生物神经元对照人工神经元生物神经元人工神经元细胞核节点(加权求和+激活函数)树突输入轴突带权重的连接突触输出人工神经网络人工神经网络,模仿哺乳动物大脑皮层的神经系统,但规模要小得多。它由许多简单的处理单元(神经元)互联组成,这些处理单元(神经元)的作用类似于生物神经元,接受信息输入,处理后向下一层输出信息。人工神经网络由多层神经元组成。层与层之间的神经元有连接,而层内...

人工智能深度学习入门习之(25)TensorFlow – 例子:线性回归

数学中的回归是指,现实中的变量之间存在一种函数关系,通过一批样本数据找出这个函数关系,即通过样本数据回归到真实的函数关系。线性回归/LinearRegression是指,一些变量之间存在线性关系,通过一批样本数据找出这个关系,线性关系函数的图形是一条直线。线性函数的方程如下:y=wx+by=wx+b线性回归就是根据一批样本数据,确定这个方程,即确定权重ww和偏置bb。因此,要创建线性模型,需要:应变量(y)斜率或权重变量(w)截距或偏置(b)自变量(x)让我们开始使用TensorFlow建立线性模型:importtensorflow.compat.v1astfimportnumpyasnptf.compat.v1.disable_eager_execution()#为参数斜率(W)创建变量,初始值为0.4W=tf.Variable([.4],tf.float32)#为参数截距(b)创建变量,初始值为-0.4b=tf.Variable([-0.4],tf.float32)#为自变量(用x表示)创建占位符x=tf.placeholder(tf.float32)#线性回归方程linear_m...

人工智能深度学习入门习之(24)TensorFlow – TensorBoard

TensorBoard是一个工具,可以图形化显示TensorFlow程序(神经网络),还可以显示许多训练过程中的指标数据,如损失、准确度或权重等。TensorBoard可以帮助用户更好地理解、调试和优化TensorFlow程序。下面是一个线性回归模型的图形:TensorBoard通过读取TensorFlow事件日志文件来呈现神经网络。TensorFlow事件日志文件记录了神经网络(计算图)构建详情。TensorBoard主界面如下所示:主要栏目:Scalars/标量:在模型训练期间显示不同的有用信息Graphs/图:显示模型图形Histogram/直方图:用直方图显示权重Distribution/分布:显示权重的分布Projector/投影仪:显示主成分分析和T-SNE算法,该技术用于降维1.启动TensorBoardtensorboard--logdir=LOGDIR_PATH  2.访问TensorBoardTensorboard页面默认网址是http://localhost:6006,使用浏览器访问改地址。1.创建一个TensorFlow应用TensorFlow应用代码如下所示,...

人工智能深度学习入门习之(23)TensorFlow – 高阶API

前面章节都是低阶API的介绍,有助于我们理解TensorFlow的基础知识。为方便开发人员,TensorFlow提供了高阶API,包括以下模块:Keras,用于构建和训练深度学习模型的TensorFlow高阶API。EagerExecution,一个以命令方式编写TensorFlow代码的API,就像使用NumPy一样。Estimator,一个高阶API,可以提供已准备好执行大规模训练和生产的完全打包的模型。导入数据,简单的输入管道,用于将您的数据导入TensorFlow程序。如需进一步了解,可参考相关资料。Estimator是一种可极大地简化机器学习编程的高阶TensorFlowAPI。Estimator会封装下列操作:训练评估预测导出以供使用我们可以使用TensorFlow提供的预创建的Estimator,也可以编写自定义Estimator。所有Estimator(无论是预创建的还是自定义)都...

人工智能深度学习入门习之(22)TensorFlow – 会话

TensorFlow中,会话(Session)表示计算图一次执行的上下文,也被称为TensorFlow运行时。TensorFlow应用大致可以分为2个部分:使用计算图定义神经网络结构创建会话运行神经网络(计算图)我们将通过一个例子来加深理解。示例本例完成以下操作:创建两个张量常量创建一个操作打开一个会话打印结果importtensorflow.compat.v1astftf.compat.v1.disable_eager_execution()##创建2个常量x=tf.constant([2])y=tf.constant([4])##定义一个操作multiply=tf.multiply(x,y)##创建会话执行操作#打开一个会话,所有操作都将在会话中进行sess=tf.Session()#执行定义好的操作result_1=sess.run(multiply)#打印结果print(result_1)#关闭会话sess.close()输出[8]可以在会话中,打印张量的值。##检查之前创建的张量sess=tf.Session()print(sess.run(x))print(sess.run...

人工智能深度学习入门习之(21)TensorFlow – 创建计算图

下面的代码在内存中创建一个默认计算图。importtensorflowastfx=tf.Variable(3,name="x")y=tf.Variable(4,name="y")f=x*x*y+y+2代码中声明了变量和函数,这将会在内存中创建一个默认计算图。默认计算图是TensorFlow默认生成的计算图。>>>importtensorflowastf>>>x1=tf.Variable(1)>>>x1.graphistf.get_default_graph()True可以通过重启Pythonshell解决这个问题,但更方便的是通过运行tf.reset_default_graph()来重置默认计算图。...

人工智能深度学习入门习之(20)TensorFlow – 占位符

占位符允许稍后赋值,通常用于存储样本数据。要创建占位符,可使用tf.placeholder方法。语法tf.placeholder(dtype,shape=None,name=None)说明dtype:数据类型shape:占位符的维数,可选。默认情况下,值为赋值数据的形状name:占位符的名称,可选声明一个占位符:importtensorflow.compat.v1astftf.compat.v1.disable_eager_execution()data_placeholder_a=tf.placeholder(tf.float32,name="data_placeholder_a")print(data_placeholder_a)输出Tensor("data_placeholder_a:0",dtype=float32)feed_dict参数feed_dict参数可以为占位符提供具体赋值。 ...

人工智能深度学习入门习之(19)TensorFlow – 变量

变量存储可变化的值,例如可用于存储可训练参数:权重和偏置。要创建一个变量,可以使用tf.get_variable()方法。tf.get_variable(name="",values,dtype,initializer)参数name="":变量名称values:指定变量形状dtype:数据类型,可选initializer:如何初始化张量,可选。如果指定了初始化器,则不需要包含“values”,因为使用的是“初始化器”的形状。例如,下面的代码创建了一个形状是1×2的变量,变量中元素的默认值是随机值,变量命名为var。importtensorflow.compat.v1astf#创建一个变量var=tf.get_variable("var",[1,2])print(var.shape)输出(1,2)importtensorflow.compat.v1astfvar_init_1=tf.get_variable("var_init_1",[1,2],dtype=tf.int32,initializer=tf.zeros_initia...

人工智能深度学习入门习之(18)TensorFlow – 张量运算

我们已经知道怎么创建张量,现在来学习张量运算。TensorFlow包含了许多基本的张量运算操作,让我们从一个简单的平方运算开始。要进行平方运算,可以使用tf.sqrt(x)函数,x是一个浮点数。importtensorflowastfx=tf.constant([2.0],dtype=tf.float32)print(tf.sqrt(x))输出Tensor("Sqrt:0",shape=(1,),dtype=float32)注意:返回的是一个张量对象,而不是2的平方运算结果。此处打印的是张量定义,而不是运算的实际值。在后面章节中,将介绍TensorFlow如何执行操作。下面是常用运算操作的列表。用法相似,每个操作都需要一个或多个参数。tf.add(a,b)tf.substract(a,b)tf.multiply(a,b)tf.div(a,b)tf.pow(a,b)tf.exp(a)tf.sqrt(a)示例importtensorflowastf#Add#创建两个张量:一个带1和2的张量,一个3和4的张量tensor_a=tf.constant([[1,2]],dtype=tf.int3...

人工智能深度学习入门习之(17)TensorFlow – 张量数据类型

张量中的所有元素只能有一种数据类型。可以使用张量属性dtype获取数据类型。importtensorflowastfm_shape=tf.constant([[10,11],[12,13],[14,15]])print(m_shape.dtype)输出<dtype:'int32'>在某些情况下,你希望更改数据的类型,可以使用tf.cast函数。下面,使用cast方法将浮点类型的张量转换为整数类型。#更改数据类型type_float=tf.constant(3.123456789,tf.float32)type_int=tf.cast(type_float,dtype=tf.int32)print(type_float.dtype)print(type_int.dtype)输出<dtype:'float32'><dtype:'int32'>当张量在创建时没有指定数据类型,TensorFlow将自动选择数据类型。例如,如果张量创建时传入一个文本值,张量的数据类型将被设置为字符串类型。...

人工智能深度学习入门习之(16)TensorFlow – 张量形状

张量的形状描述了张量中每个维度的元素数量。打印张量时,TensorFlow会输出张量的形状,你也可以直接获取张量的形状属性。importtensorflowastf#张量形状m_shape=tf.constant([[10,11],[12,13],[14,15]])m_shape.shape输出TensorShape([Dimension(3),Dimension(2)])矩阵有3行2列。TensorFlow中,有一些有用的函数,可以指定形状创建张量。创建元素值为0,形状为(10)的张量。#创建元素值为0的张量print(tf.zeros(10))输出Tensor("zeros:0",shape=(10,),dtype=float32)创建元素值为1,形状为(10,10)的张量。importtensorflowastf#创建元素值为1,形状为`(10,10)`的张量print(tf.ones([10,10]))输出Tensor("ones:0",shape=(10,10),dtype=float32)指定形状时,可以引用已有张量的形状。矩阵m_shape是一个3×2的形状。...

人工智能深度学习入门习之(15)TensorFlow – 创建张量

要创建张量,可以使用tf.constant()函数。tf.constant(value,dtype,name="")参数说明value:定义张量的n维数组值,可选dtype:定义张量数据类型,例如:tf.string:字符串类型tf.float32:浮点类型tf.int16:整型“name”:张量的名字,可选,默认:“Const_1:0”示例创建0维张量,即标量,一个数值。importtensorflowastf##rank0#Defaultnamer1=tf.constant(1,tf.int16)print(r1)输出Tensor("Const:0",shape=(),dtype=int16)"Const:0" –张量名称shape –张量形状dtype –张量数据类型示例创建命名张量。importtensorflowastf#Namedmy_scalarr2=tf.constant(1,tf.int16,name="my_scalar")print(r2)输出Tens...

人工智能深度学习入门习之(14)TensorFlow – 计算图

TensorFlow中的各种操作,如加权求和,激活函数等,都被编排成一个图,称为计算图。这样,一个神经网络就可以用一个计算图来表示。计算图从本质上来说,是TensorFlow在内存中构建的程序逻辑图,它定义了实现神经网络所需的变量和操作。计算图定义好后,就可以被执行了。计算图可以被分割成多个块,并且可以并行地运行在多个不同的cpu或gpu上,这被称为并行计算。因此,计算图可以支持大规模的神经网络。下面将逐一讨论TensorFlow程序元素:Constant/常量常量的值不变。Placeholder/占位符占位符允许稍后赋值,通常用于存储样本数据。a=tf.placeholder(tf.float32)feed_dict参数为占位符提供具体赋值。Variable/变量存储可变值,例如可训练参数:权重和偏置。W=tf.Variable([.3],dtype=tf.float32)b=tf.Variable([-.3],dtype=tf.float32)x=tf.placeholder(tf.float32)linear_model=W*x+bSession/会话表示计算图一次执行的上下文,...

人工智能深度学习入门习之(13)TensorFlow – 张量

Tensorflow的名字直接来源于它的核心数据结构:张量。张量的概念来源于线性代数,表示一个多维数组,张量中的元素具有相同的数据类型。Tensorflow中,所有的计算都涉及到张量,张量可以是输入数据,或者计算结果。TensorFlow中的各种操作,如加权求和,激活函数等,都被编排成一个图,称为计算图。这样,一个神经网络就可以用一个计算图来表示。张量表示的输入数据传递给计算图,计算图处理后,也以张量的方式输出数据。示例如果我们有一个2×3矩阵:  TensorFlow中,将这个矩阵表示为张量:[[1,2,3],[4,5,6]]张量的阶(rank)是张量的维数。阶为1的张量等价于向量,阶为2的向量等价于矩阵。对于一个阶为2的张量,通过t[i,j]就能获取它的每个元素。对于一个阶为3的张量,需要通过t[i,j,k]进行寻址,以此类推。张量的形状描述了张量每个维度中的元素数量。就是说一个张量有几行几列,例如一个形状[2,3],即2行3列的张量:[[123][345]]一个张量具有一个数据类型,允许的数据类型如下:数据类型Python类型描述DT_FLOATt...
首页上一页...678910...下一页尾页