本文主要是介绍深度学习TensorFlow框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
深度学习介绍
深度学习和机器学习区别
机器有人工参与,而深度学习是靠网络;
深度学习需要大量的数据集,训练神经网络需要大量的算力
机器学习有:朴素贝叶斯,决策树等
深度学习主要是神经网络
深度学习应用场景
CV:物体识别,场景识别,车型认识,人脸检测跟踪,人脸关键点跟踪,人脸身份认证
NPL:机器翻译 文本识别 聊天对话
语音技术:语音识别
TensorFlow框架的使用
结构
各个组件
图
什么是图结构
图结构就是数据(Tensor)加操作(operation)
2 图相关操作
new_g = tf.Graph()
with new_g.as_default();
用TensorBoard:可视化学习
1.
2启动
OP
操作函数
tf.constant(Tensor对象) Const
tf.add(Tensor1,Tensor2) Add对象
指令名称
会话
开启会话的俩种方式:
# tf.Session:用于完整的程序当中 # tf.InteractiveSession:用于交互式上下文中的TensorFlow ,例如shell # 1)会话掌握资源,用完要回收 - 上下文管理器 # 2)初始化会话对象时的参数 # graph=None # target:如果将此参数留空(默认设置), # 会话将仅使用本地计算机中的设备。 # 可以指定 grpc:// 网址,以便指定 TensorFlow 服务器的地址, # 这使得会话可以访问该服务器控制的计算机上的所有设备。 # config:此参数允许您指定一个 tf.ConfigProto # 以便控制会话的行为。例如,ConfigProto协议用于打印设备使用信息 # 3)run(fetches,feed_dict=None) # 3 feed操作 # a = tf.placeholder(tf.float32, shape=) # b = tf.placeholder(tf.float32, shape=)
张量
两个属性:type 和shape
# 张量Tensor # print() # ndarray # 张量值的类型 当在会话中返回的类型 # 2.4.1 张量(Tensor) # 张量 在计算机当中如何存储? # 标量 一个数字 0阶张量 # 向量 一维数组 [2, 3, 4] 1阶张量 # 矩阵 二维数组 [[2, 3, 4], 2阶张量 # [2, 3, 4]] # …… # 张量 n维数组 n阶张量 # 1 张量的类型 # 2 张量的阶 # 创建张量的时候,如果不指定类型 # 默认 tf.float32 # 整型 tf.int32 # 浮点型 tf.float32
# 张量(Tensor) # 张量 在计算机当中如何存储? # 标量 一个数字 0阶张量 # 向量 一维数组 [2, 3, 4] 1阶张量 # 矩阵 二维数组 [[2, 3, 4], 2阶张量 # [2, 3, 4]] # …… # 张量 n维数组 n阶张量 # 1 张量的类型 # 2 张量的阶 # 创建张量的时候,如果不指定类型 # 默认 tf.float32 # 整型 tf.int32 # 浮点型 tf.float32 # 2.4.2 创建张量的指令 # 2.4.3 张量的变换 # ndarray属性的修改 # 类型的修改 # 1)ndarray.astype(type) # tf.cast(tensor, dtype) # 不会改变原始的tensor # 返回新的改变类型后的tensor # 2)ndarray.tostring() # 形状的修改 # 1)ndarray.reshape(shape) # -1 自动计算形状 # 2)ndarray.resize(shape) # 静态形状 - 初始创建张量时的形状 # 1)如何改变静态形状 # 什么情况下才可以改变/更新静态形状? # 只有在形状没有完全固定下来的情况下 # tensor.set_shape(shape) # 2)如何改变动态形状 # tf.reshape(tensor, shape) # 不会改变原始的tensor # 返回新的改变形状后的tensor # 动态创建新张量时,张量的元素个数必须匹配
变量
创建变量
def variable_demo():"""变量的演示:return:"""# 创建变量with tf.variable_scope("my_scope"):a = tf.Variable(initial_value=50)b = tf.Variable(initial_value=40)with tf.variable_scope("your_scope"):c = tf.add(a, b)print("a:\n", a)print("b:\n", b)print("c:\n", c)# 初始化变量init = tf.global_variables_initializer()# 开启会话with tf.Session() as sess:# 运行初始化sess.run(init)a_value, b_value, c_value = sess.run([a, b, c])print("a_value:\n", a_value)print("b_value:\n", b_value)print("c_value:\n", c_value)return None
# TensorFlow - 变量 # 存储模型参数 # 1 创建变量 # 变量需要显式初始化,才能运行值 # 2 使用tf.variable_scope()修改变量的命名空间 # 使得结构更加清晰
API
通过TensorFlow官方文档去看
线性回归案例(用TensorFlow)
7.1 线性回归原理复习1)构建模型y = w1x1 + w2x2 + …… + wnxn + b2)构造损失函数均方误差3)优化损失梯度下降 7.2 案例:实现线性回归的训练准备真实数据100样本x 特征值 形状 (100, 1)y_true 目标值 (100, 1)y_true = 0.8x + 0.7假定x 和 y 之间的关系 满足y = kx + bk ≈ 0.8 b ≈ 0.7流程分析:(100, 1) * (1, 1) = (100, 1)y_predict = x * weights(1, 1) + bias(1, 1)1)构建模型y_predict = tf.matmul(x, weights) + bias2)构造损失函数error = tf.reduce_mean(tf.square(y_predict - y_true))3)优化损失optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(error)5 学习率的设置、步数的设置与梯度爆炸 7.3 增加其他功能1 增加变量显示1)创建事件文件2)收集变量3)合并变量4)每次迭代运行一次合并变量5)每次迭代将summary对象写入事件文件2 增加命名空间3 模型的保存与加载saver = tf.train.Saver(var_list=None,max_to_keep=5)1)实例化Saver2)保存saver.save(sess, path)3)加载saver.restore(sess, path)4 命令行参数使用1)tf.app.flagstf.app.flags.DEFINE_integer("max_step", 0, "训练模型的步数")tf.app.flags.DEFINE_string("model_dir", " ", "模型保存的路径+模型名字")2)FLAGS = tf.app.flags.FLAGS通过FLAGS.max_step调用命令行中传过来的参数3、通过tf.app.run()启动main(argv)函数
总结
这篇关于深度学习TensorFlow框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!