百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

人工智能神器—TensorFlow入门基础(激励函数、隐藏层)

toyiye 2024-06-27 01:07 20 浏览 0 评论

Activation Function(激励函数):

前几期的文章,我们介绍了激励函数的感念,为何需要激励函数,那么在TensorFlow中如何使用激励函数

激励函数说白了就是非线性方程,在不同的神经网络中,可以尝试不同的激励函数,一般在卷积神经网络CNN的卷积层中, 推荐的激励函数是 relu. 在循环神经网络中RNN中, 推荐的是 tanh 或者是 relu。具体激励函数的具体细节,我们会随着文章的不断分享,逐渐介绍。

从TensorFlow数据结构图,我们可以看出TensorFlow除了输入层,训练层外,还有多层的隐藏层(hidden layer负责降维),在不同的实际问题中,添加多少隐藏层,需要根据项目的需求。我们上期的文章,TensorFlow数据结构构建一文,简单介绍了TensorFlow的数据结构建立,但是没有添加任何层,我们的激励函数就添加在层的定义中。

TensorFlow添加层

我们修改一下我们上期的代码,介绍一下如何使用激励函数与如何添加层

首先我们定义一个层的函数

import tensorflow as tf
import numpy as np
#定义层,这里activation_function=None
def add_layer(inputs,in_size,out_size,activation_function=None):
#定义Weights
 Weights = tf.Variable(tf.random_normal([in_size,out_size]))
#定义biases 推荐不为0的值
 biases = tf.Variable(tf.zeros([1,out_size])+0.1)
#定义y=W*x+b tf.matmul()是矩阵的乘法
 Wx_plus_b=tf.matmul(inputs,Weights)+biases
 if activation_function is None:
#上期的代码也可以添加层,只是activation_function=None
 outputs=Wx_plus_b
 else:
#通过激励函数非线性话y=W*x+b
 outputs=activation_function(Wx_plus_b)
 return outputs

添加层的函数定义后,后期我们就可以直接使用函数定义添加层。

2、创建初始化数据

x=np.linspace(-1,1,300)[:,np.newaxis]
#添加一定的noise,更接近现实数据
noise=np.random.normal(0,0.05,x.shape)
#本期定义一个一元二次函数
y=np.square(x)-0.5+noise
#定义输入输出数据
x_ph=tf.placeholder(tf.float32,[None,1])
y_ph=tf.placeholder(tf.float32,[None,1])

3、占位符与feed_dict

我们前期的文章,无论定义的是变量还是常量,都是事先定义好的量,我们没有办法给TensorFlow输入数据。占位符是一种用于接受外部输入的节点,通过占位符,我们可以给TensorFlow输入数据,

4、添加层

#输入层 定义激励函数为relu
lay_one=add_layer(x_ph,1,10,activation_function=tf.nn.relu)
#输出层 就是我们TensorFlow训练的一元二次方程
predition=add_layer(lay_one,10,1,activation_function=None)

5,计算误差loss

loss=tf.reduce_mean(tf.reduce_sum(tf.square(y_ph-predition),reduction_indices=[1]))

6、设置优化器

optimizer=tf.train.GradientDescentOptimizer(0.2)

7、设置TensorFlow神经网络

train=optimizer.minimize(loss)

8、初始化神经网络

init = tf.global_variables_initializer()

9、启动神经网络

with tf.Session() as sess:
 sess.run(init)
 for i in range(1000)
#占位符通过feed_dict输入数据,这里我们输入我们定义的x,y,当然这里你也可以输入其他的数据
 sess.run(train,feed_dict={x_ph:x,y_ph:y})
 if i%50==0:
 print(i,sess.run(loss,feed_dict={x_ph:x,y_ph:y}))
>>>

10、查看输出

刚开始的误差为0.3,随着训练的step增加,误差loss 越小

下期预告

下期介绍一下matplotlib 可视化工具,这在TensorFlow中可以更形象的看到TensorFlow的训练结果

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码