深度学习笔记—什么是神经网络与TensorFlow实现神经网络?

版权声明:本文为博主原创文章,可允许转载,但注明出处。 https://blog.csdn.net/JavaWebRookie/article/details/81559185

 

学习目录:

  • (python自然语言处理实战-核心技术与算法书籍《涂铭 刘详 刘树春》)—推荐
  • (吴恩达-深度学习)[http://mooc.study.163.com/smartSpec/detail/1001319001.htm]—推荐
  • (莫烦系列-深度学习与机器学习)[https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/]
  • (麦子学院-深度学习)[https://www.bilibili.com/video/av15200856/]
  • (中文网)(http://www.tensorfly.cn/) (英文网)[https://www.tensorflow.org/]—推荐
  • (炼数成金-深度学习框架Tensorflow学习与应用)[https://www.bilibili.com/video/av20542427/]

总结深度学习的笔记,如果写的不对请评论指出、我会修改。 

 

1、传送门:GitHub比较库,喜欢收下(https://github.com/andyczy/czy-study-py-ml-deepLearning

你将学到:

  • 1、大白话理解什么是神经网络?
  • 2、TensorFlow实现神经网络?

 

1、什么是神经网络?

         它就是一个数学函数:有输入、输出、计算逻辑(节点)。

                                  

        把房屋的面积作为神经网络的输入(我们称之为x ),通过一个节点(一个小圆圈),最终输出了价格(我们用y 表示)。这个函数被称作ReLU激活函数,它的全称是Rectified Linear Unit。rectify可以理解成max(0,x)

 

但这个函数太简单了,往往现实没那么简单,比如房价的高低是有很多因素影响的:如位置、房间面积等等。

                                      

在图上每一个画的小圆圈都可以是ReLU(激活函数)的一部分,也就是指修正线性单元,或者其它稍微非线性的函数。

这里有四个输入的神经网络,这输入的特征可能是房屋的大小、卧室的数量、邮政编码和区域的富裕程度。给出这些输入的特征之后,神经网络的工作就是预测对应的价格。同时也注意到这些被叫做隐藏单元圆圈。

神经网络理解为:是一个多输入、多个节点(计算逻辑)、一个输出的函数。

 

2、TensorFlow 实现神经网络

  •   TensorFlow  实现简单例子(还不了解它的可以去官网看看):
# 定义两个常量
a = tf.constant(10)
b = tf.constant(32)
# 相加
s = tf.add(a,b)
# s= sess.run(a + b)
# 输出
print("两个数相加:",s)

  控制台输出:(tensor是TensorFlow用来表示数据的,这不是我们想要的结果)

两个数相加: Tensor("Add:0", shape=(), dtype=int32)
# 启动TensorFlow默认的图
sess = tf.Session()
s = sess.run(s)
print("两个数相加:",s)

  控制台输出:

两个数相加: 42

 

  • 实现简单的神经网
import numpy as np
import tensorflow as tf


# 定义参数w,在TensorFlow中,你要用tf.Variable()来定义参数
w = tf.Variable(0,dtype = tf.float32)

# 定义损失函数(就是一个函数,别想那么复杂):
cost = w**2-10*w+25  # tensorflow 也能识别
# cost = tf.add(tf.add(w**2,tf.multiply(- 10.,w)),25)
# 定义损失函数:(让我们用0.01的学习率,目标是最小化损失)
train = tf.train.GradientDescentOptimizer(0.01).minimize(cost)

# 开启了一个TensorFlow session。
session = tf.Session()

# 用来初始化全局变量。
init = tf.global_variables_initializer()
session.run(init)

# 定义train为学习算法,它用梯度下降法优化器使损失函数最小化,但实际上我们还没有运行学习算法,所以session.run(w)评估了w等于0
print(session.run(w))

# 运行了梯度下降的1000次迭代,最后w变成了4.99999(4.9999886),记不记得我们说〖(w-5)〗^2最小化,因此w的最优值是5,这个结果已经很接近了
for _ in range(10000):
    session.run(train)
print(session.run(w))

  控制台输出(训练10000,结果接近于5了,这就是我们想要的结果):

0.0
4.9999886

 

 

 

 

 

阅读更多

扫码向博主提问

陈郑游

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • java
  • mysql
  • redis
去开通我的Chat快问
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页