AI – TensorFlow – 起步(Start)

2022-02-18

输入—>神经网络(黑盒)—>输出

每一层都有其对应的内容、功能和作用。

一般来说,神经网络 ( ) 是由一系列神经层组成的系统,对输入进行处理然后输出。

神经网络处理:

()—“神经网络层处理—“代表特征( )—“再次神经网络层处理—“另一个代表特征…

也就是将一个代表特征转化为另一个代表特征,特征之间的转换一次次,也就是越来越深入的理解。

代表性特征通常只有计算机本身才能理解。

02-数据流图(数据流)

使用数据流图(data flow)进行计算,也就是说,图( graph或data flow graph)是一种Graph数据结构。

先创建一个数据流图,然后将数据(以()的形式)放入数据流图中进行计算。

数据在输入层输入,在隐藏层处理,在输出层输出。

张量流过图,在每个节点上由一条指令操作,一条指令的输出张量通常成为后续指令的输入张量。

动画:

注意:这里的演示图像使用梯度下降处理,梯度下降会更新几个参数并完美,更新后的参数去隐藏层再次学习,以此类推,直到结果收敛。

在训练模型时,会不断地从数据流图中的一个节点流向另一个节点,这就是名字的由来。

节点只会在需要时根据相关节点的需要进行计算。

许多程序由一个图组成,但程序可以选择创建多个图。

编程本质上是一个两步过程:

将常量、变量和指令集成到一个图形中。在一个会话中评估这些常量、变量和指令。

03 – 张量()

在 中,变量统称为 ()。

() 是一个任意维度的数组。

在大多数情况下,只会使用一个或多个低维张量(2 阶及以下)。

典型程序中的大多数代码行都是指令,张量也是计算图中的一种指令。

张量可以作为常量或变量存储在图形中。

04 – 示例:处理结构

此示例简要演示了如何在代码中运行构建的结构:

 1 # coding=utf-8
 2 import tensorflow as tf
 3 import numpy as np  # 使用numpy创建数据
 4 import os
 5 
 6 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
 7 
 8 # ### 创建数据
 9 x_data = np.random.rand(100).astype(np.float32)  # 生成float32类型的100个随机数列
10 y_data = x_data * 0.1 + 0.3
11 # print("x_data:n{} ny_data:n{}".format(x_data, y_data))
12 
13 # ### 创建TensorFlow结构 开始### 
14 # 搭建模型
15 Weights = tf.Variable(tf.random_uniform([1], -1.0, 1.0))  # 定义权重变量:1维结构,随机数值范围为“-1.0”到“1.0”
16 biases = tf.Variable(tf.zeros([1]))  # 定义偏差:初始值定义为0
17 # print("Weights:{}nbiases:{}".format(Weights, biases))
18 y = Weights * x_data + biases  # 预测的y值
19 # 计算误差
20 loss = tf.reduce_mean(tf.square(y - y_data))  # 计算误差:计算预测值y和真实值y_data的误差
21 # 传播误差(反向传递误差,使用优化器减少误差)
22 optimizer = tf.train.GradientDescentOptimizer(0.5)  # 优化器使用梯度下降法(Gradient Descent)进行参数的更新,学习效率为0.5
23 train = optimizer.minimize(loss)  # 使用优化器减少误差
24 # 激活Variable
25 init = tf.global_variables_initializer()  # 必须初始化所有定义的Variable

图片[1]-AI – TensorFlow – 起步(Start)-唐朝资源网

26 # ### 创建TensorFlow结构 结束### 27 28 # ### 训练 29 with tf.Session() as sess: # 创建会话 30 sess.run(init) # 用Session来执行init初始化步骤 31 for step in range(201): 32 sess.run(train) # 用Session来run每一次training的数据,逐步提升神经网络的预测准确性 33 if step % 20 == 0: # 每隔20次打印Weights和biases 34 print("Steps:{} Weights:{} Biases:{}".format(step, sess.run(Weights), sess.run(biases))) 35 36 # ### 处理结构 37 # 在TensorFlow中必须先建立神经网络的结构, 才能放入数据,最终运行这个结构; 38 # 本例简单演示了在TensorFlow中如何用代码来运行搭建的结构;

p>

05 – 示例:()

 1 # coding=utf-8
 2 import tensorflow as tf
 3 import os
 4 
 5 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
 6 
 7 matrix1 = tf.constant([[3, 3]])  # 定义一个一行两列的矩阵常量
 8 matrix2 = tf.constant([[2],
 9                        [2]])  # 定义一个两行一列的矩阵常量
10 print("matrix1: ", matrix1, "nmatrix2: ", matrix2, )
11 
12 product = tf.matmul(matrix1, matrix2)  # 定义矩阵相乘(matrix multiply),但不进行计算

13 
14 # 使用Session的形式 - 不推荐
15 sess = tf.Session()  # 注意Session的首字母大写
16 result = sess.run(product)  # 在Session中激活product并得到计算结果
17 print("result:", result)
18 sess.close()  # 关闭session
19 
20 # 使用Session的形式 - 推荐
21 with tf.Session() as sess2:
22     result2 = sess2.run(product)
23     print("result2:", result2)
24 
25 # ### 会话控制(Session)
26 # 在TensorFlow中,Session是控制和输出文件的执行语句
27 # 运行session.run()可以获得运算结果, 或者控制运算

06 – 示例:变量()

 1 # coding=utf-8
 2 import tensorflow as tf
 3 import os
 4 
 5 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
 6 
 7 state = tf.Variable(6, name='counter')  # 在TensorFlow中变量必须先被定义,变量counter的初始值值为6
 8 print("tf.Variable(6, name='counter'):", state.name, state)
 9 
10 one = tf.constant(1)  # 定义常量one,值为1
11 print("tf.constant(1):", one)

图片[2]-AI – TensorFlow – 起步(Start)-唐朝资源网

12 13 new_value = tf.add(state, one) # 定义加法步骤,但并没有直接计算 14 print("tf.add(state, one):", new_value) 15 update = tf.assign(state, new_value) # 加载new_value到state 16 print("tf.assign(state, new_value):", update) 17 18 init = tf.global_variables_initializer() # 必须初始化变量! 19 20 # 演示:在Session中完成变量和常量的相加 21 with tf.Session() as sess: 22 sess.run(init) # 在Session中激活变量 23 for _ in range(3): 24 sess.run(update) # 在Session调用前面定义的update 25 # print(state) # 无法打印出state内容 26 print(sess.run(state)) # 需要将Session的指针指向state,才能打印出state内容 27 28 # ### 变量(Variable) 29 # 定义语法: state = tf.Variable() 30 # 如果定义Variable, 就必须要initialize

@ >

07 – 示例:传入值()

 1 # coding=utf-8
 2 import tensorflow as tf
 3 import os
 4 
 5 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
 6 
 7 input1 = tf.placeholder(tf.float32)  # 定义placeholder的type为float32

 8 input2 = tf.placeholder(tf.float32)
 9 output = tf.multiply(input1, input2)  # 将input1和input2做乘法运算(multiply)并输出为 output
10 
11 with tf.Session() as sess:
12     print(sess.run(output, feed_dict={input1: [8], input2: [2]}))  # 需要传入的值放在feed_dict={},并一一对应每一个input
13 
14 # ### 传入值(Placeholder)
15 # placeholder是TensorFlow中的占位符,暂时储存变量;
16 # 使用tf.placeholder()可以从外部传入data到TensorFlow;
17 # 传输数据的形式为:“sess.run(***, feed_dict={input: **})”,也就是说通过sess.run()完成传值;

08 – 激励函数( , AF)

线性方程( )和非线性方程( )

激活函数( )

一个函数(如ReLU或函数),用于对上一层的所有输入进行加权求和,然后生成一个输出值(通常是非线性值)并传递给下一层。

引入激励函数,解决日常生活中线性方程不能泛化的问题。

激励函数(AF)其实是另外一个非线性函数,比如relu, , tanh等,嵌套在原来的线性结果之上,使得输出结果也具有非线性特征。

您可以创建自己的激发函数(必须是可微分的)来处理您自己的问题。

当误差反向传播时,只有可微分激励函数才能将误差传递回去。

常见的选择

如果神经网络只有两三层,那么对于隐藏层,任何激活函数都可以。

如果使用特殊的多层神经网络,必须仔细选择激励函数,避免出现梯度爆炸和梯度消失的问题。

默认首选激励函数:

官网信息

提供激励函数(-):

类别:

技术要点:

相关文章:

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容