二月四号博客

余生长醉 提交于 2020-02-05 00:54:53

今天是学习深度学习的第二天

1,大概了解了一遍TensorFlow的框架

  TensorFlow的整体结构-数据流图(图,会话),图,会话,张量,变量,操作以及Tensor board的可视化

2,图的相关操作

  默认图:tf.get_default_graph()(调用方法) .graph(查看属性)

  自定义图:new_graph = tf.Graph()(创建图)  with new_graph.as_default(): (定义数据和操作)

3,张量 Tensor

  标量  一个数字  0阶张量

  向量  一维数组 [2,3,4]  1阶张量

  矩阵  二维数组 [[2,3,4],[2,3,4]]  二阶张量

  。。。。。

  张量  n维数组  n阶张量

 

  创建张量的方法:a_new = tf.constant([4,9,10], dtype=ft.int32)

          tensor = tf.placeholder(dtype=tf.float32, shape=[None, 10])

   

  张量的转换:tensor.set_shape(shape)(改变原始的tensor)

        tf.reshape(tensor, shape)(不会改变原始的tensor     返回新的改变形状后的tensor   动态创建新张量时,张量的元素个数必须匹配)

4,变量 OP(要记得初始化)(用来迭代,训练的对象)

   创建变量

    weights = tf.Variable(initial_value=tf.random_normal(shape=[1, 1]), name="Weights")

   创建变量后的初始化

    init = tf.global_variables_initializer()

    sess.run(init)

5,案例:线性回归的训练

 

 1 # 模拟实现线性回归训练
 2 def linear_demo():
 3     # 1)准备数据
 4     with tf.compat.v1.variable_scope("prepare_data"):
 5         x = tf.random.normal(shape=[100, 1], name='feature')
 6         y_true = tf.matmul(x, [[0.8]])+0.7
 7 
 8     # 2)构建模型
 9     with tf.compat.v1.variable_scope("create_modal"):
10         weights = tf.Variable(initial_value=tf.random.normal(shape=[1, 1]), name="Weights")
11         bias = tf.Variable(initial_value=tf.random.normal(shape=[1, 1]), name="Bais")
12         y_predict = tf.matmul(x, weights)+bias
13 
14     # 3)构造损失函数
15     with tf.compat.v1.variable_scope("loss_function"):
16         error = tf.reduce_mean(tf.square(y_true-y_predict))
17 
18     # 4)优化损失
19     with tf.compat.v1.variable_scope("optimizer"):
20         optimizer = tf.compat.v1.train.GradientDescentOptimizer(learning_rate=0.1).minimize(error)
21 
22     # 5)初始化变量
23     init = tf.compat.v1.global_variables_initializer()
24 
25     # 6)开启会话
26     with tf.Session() as sess:
27         # 初始化变量
28         sess.run(init)
29 
30         # 查看初始化模型后参数的值
31         print("训练前模型参数为:权重%f,偏置%f,损失为%f" % (weights.eval(), bias.eval(), error.eval()))
32 
33         for i in range(100):
34             sess.run(optimizer)
35             print("第%d次训练后模型参数为:权重%f,偏置%f,损失为%f" % (i + 1, weights.eval(), bias.eval(), error.eval()))
36 
37         print("训练后模型参数为:权重%f,偏置%f,损失为%f" % (weights.eval(), bias.eval(), error.eval()))
38 
39     return None

 

  

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!