美文网首页我爱编程
tensorflow基础篇

tensorflow基础篇

作者: 夜尽天明时 | 来源:发表于2017-05-26 18:40 被阅读0次

    写在前面

    • 态度决定高度!让优秀成为一种习惯!
    • 世界上没有什么事儿是加一次班解决不了的,如果有,就加两次!(- - -茂强)

    tensorflow的一般建模步骤:

    • 数据的输入(这个有很多方法,读取本地文件,或者爬虫网络数据,或者数仓都可以)

    • 数据的标准化 (主要是数据转换成tensorflow能接受的格式)

    • 把数据分成训练数据和测试数据

    • 设置模型参数 (主要有学习率,迭代次数,batch_size等)
      learning_rate = 0.01
      batch_size = 100
      iterations = 1000

    • 初始化variables和placeholders
      a_var = tf.constant(42)
      x_input = tf.placeholder(tf.float32, [None, input_size])
      y_input = tf.placeholder(tf.float32, [None, num_classes])
      其中( float64 and float16 )表示浮点类型的不同精度

    • 创建模型
      y_pred = tf.add(tf.mul(x_input, weight_matrix), b_matrix)


      模型
    • 定义损失函数
      loss = tf.reduce_mean(tf.square(y_actual – y_pred)

    损失函数
    • 初始化和训练模型
      with tf.Session(graph=graph) as session:
      ...
      session.run(...)
      ...
    • 模型评估
    • 参数或者结构调整优化模型
    • 模型应用

    Tensors的声明方式

    • 创建一个0值填充的tensor
      zero_tsr = tf.zeros([row_dim, col_dim])
    • 创建一个1填充的tensor
      ones_tsr = tf.ones([row_dim, col_dim])
    • 创建一个常量填充的tensor
      filled_tsr = tf.fill([row_dim, col_dim], 42)
    • 通过以声明的常量创建tensor
      constant_tsr = tf.constant([1,2,3])
      tf.constant(42, [row_dim, col_dim])与上一个是一样的
    • 通过其他的tensor创建
      zeros_similar = tf.zeros_like(constant_tsr)
      ones_similar = tf.ones_like(constant_tsr)
    • 序列tensor
      linear_tsr = tf.linspace(start=0, stop=1, start=3)
      [0.0, 0.5, 1.0]
      integer_seq_tsr = tf.range(start=6, limit=15, delta=3)
      [6, 9, 12]
    • 随机tensor
      randunif_tsr = tf.random_uniform([row_dim, col_dim],minval=0, maxval=1) 均与分布 ( minval <= x < maxval )
      randnorm_tsr = tf.random_normal([row_dim, col_dim],mean=0.0, stddev=1.0) 正态分布
      runcnorm_tsr = tf.truncated_normal([row_dim, col_dim],mean=0.0, stddev=1.0) 非负截尾正态分布
    • 随机项数组
      shuffled_output = tf.random_shuffle(input_tensor)
      cropped_output = tf.random_crop(input_tensor, crop_size)
    • 随机copy一个图像
      cropped_image = tf.random_crop(my_image, [height/2, width/2,3])

    variable的声明

    • 先看一个例子,体会一下接受的入参是什么?
      my_var = tf.Variable(tf.zeros([row_dim, col_dim]))
    • 如何创建和初始化一个变量
      my_var = tf.Variable(tf.zeros([2,3]))
      sess = tf.Session()
      initialize_op = tf.global_variables_initializer ()
      sess.run(initialize_op)
    • Placeholders的直观感受,该占位符是为了session训练思的数据可以从feed_dict中获取,我们只有对placeholders有个操作才能把它放到图中计算,首先初始化一个图session,然后声明一个placeholders就是x,然后声明一个y跟x之间有个恒等操作identity,然后随机创建一个数据x_vals,运行identity操作。
      sess = tf.Session()
      x = tf.placeholder(tf.float32, shape=[2,2])
      y = tf.identity(x)
      x_vals = np.random.rand(2,2)
      sess.run(y, feed_dict={x: x_vals})
      # Note that sess.run(x, feed_dict={x: x_vals}) will result in a self-referencing error
    • 全局与局部初始化变量
      在初始化时没有变量依赖顺序的就用全局的
      initializer_op = tf.global_variables_initializer ()
      如果有依赖顺序的就用局部的
      sess = tf.Session()
      first_var = tf.Variable(tf.zeros([2,3]))
      sess.run(first_var.initializer)
      second_var = tf.Variable(tf.zeros_like(first_var))
      # Depends on first_var
      sess.run(second_var.initialize

    Matrices矩阵操作

      identity_matrix = tf.diag([1.0, 1.0, 1.0])
      A = tf.truncated_normal([2, 3])
      B = tf.fill([2,3], 5.0)
      C = tf.random_uniform([3,2])
      D = tf.convert_to_tensor(np.array([[1., 2., 3.],[-3., -7.,-1.],[0., 5., -2.]]))
      print(sess.run(identity_matrix))
      [[ 1. 0. 0.]
       [ 0. 1. 0.]
       [ 0. 0. 1.]]
      print(sess.run(A))
      [[ 0.96751703 0.11397751 -0.3438891 ]
      [-0.10132604 -0.8432678 0.29810596]]
      print(sess.run(B))
      [[ 5. 5. 5.]
      [ 5. 5. 5.]]
      print(sess.run(C))
      [[ 0.33184157 0.08907614]
      [ 0.53189191 0.67605299]
      [ 0.95889051 0.67061249]]
      print(sess.run(D))
      [[ 1. 2. 3.]
       [-3. -7. -1.]
       [ 0. 5. -2.]]
    
    • 矩阵的加减和乘
      print(sess.run(A+B))
      [[ 4.61596632 5.39771316 4.4325695 ]
      [ 3.26702736 5.14477345 4.98265553]]
      print(sess.run(B-B))
      [[ 0. 0. 0.]
      [ 0. 0. 0.]]
      Multiplication
      print(sess.run(tf.matmul(B, identity_matrix)))
      [[ 5. 5. 5.]
      [ 5. 5. 5.]]
    • 矩阵的行列式
      print(sess.run(tf.matrix_determinant(D)))
      -38.0
    • 矩阵的逆
      print(sess.run(tf.matrix_inverse(D)))
      [[-0.5 -0.5 -0.5 ]
      [ 0.15789474 0.05263158 0.21052632]
      [ 0.39473684 0.13157895 0.02631579]]
    • 矩阵的楚列斯基分解
      print(sess.run(tf.cholesky(identity_matrix)))
      [[ 1. 0. 1.]
      [ 0. 1. 0.]
      [ 0. 0. 1.]]
    • 矩阵的特征值与特征向量
      print(sess.run(tf.self_adjoint_eig(D))
      [[-10.65907521 -0.22750691 2.88658212]
      [ 0.21749542 0.63250104 -0.74339638]
      [ 0.84526515 0.2587998 0.46749277]
      [ -0.4880805 0.73004459 0.47834331]]
      第一行就是特征值,剩下的行就是特征向量

    Operations的声明

    • tensorflow有一些标准的operations(加减乘除)
      add() , sub() , mul() , div()

    • tensorflow提供了数种div()方法
      print(sess.run(tf.div(3,4)))
      0
      print(sess.run(tf.truediv(3,4)))
      0.75
      print(sess.run(tf.floordiv(3.0,4.0)))
      0.0

    • 取余
      print(sess.run(tf.mod(22.0, 5.0)))
      2.0

    • cross()方法
      该方法只接受两个三维的tensor
      print(sess.run(tf.cross([1., 0., 0.], [0., 1., 0.])))
      [ 0. 0. 1.0]

    • 其他的函数列表,大家自己体会吧(英文不好下个金山词霸,挺好用的)

    tensorflow常用数学函数
    • 特殊的数学函数
    tensorflow特殊函数

    # Tangent function (tan(pi/4)=1)
    print(sess.run(tf.div(tf.sin(3.1416/4.), tf.cos(3.1416/4.))))
    1.0

    • 自定义函数
      def custom_polynomial(value):
      return(tf.sub(3 * tf.square(value), value) + 10)
      print(sess.run(custom_polynomial(11)))
      362
    • 激活函数(不用多说都知道激活函数吧)
    • max(0,x)
      print(sess.run(tf.nn.relu([-3., 3., 10.])))
      [ 0. 3. 10.]
    • min(max(0,x),6)
      print(sess.run(tf.nn.relu6([-3., 3., 10.])))
      [ 0. 3. 6.]
    • 1/(1+exp(-x))
      print(sess.run(tf.nn.sigmoid([-1., 0., 1.])))
      [ 0.26894143 0.5 0.7310586 ]
    • ((exp(x)-exp(-x))/(exp(x)+exp(-x)) [-1, 1]
      print(sess.run(tf.nn.tanh([-1., 0., 1.])))
      [-0.76159418 0. 0.76159418 ]
    • x/(abs(x) + 1)
      print(sess.run(tf.nn.softsign([-1., 0., -1.])))
      [-0.5 0. 0.5]
    • log(exp(x) + 1)
      print(sess.run(tf.nn.softplus([-1., 0., -1.])))
      [ 0.31326166 0.69314718 1.31326163]
    • (exp(x)+1) if x < 0 else x
      print(sess.run(tf.nn.elu([-1., 0., -1.])))
      [-0.63212055 0. 1. ]
      下面使一些图形
    Activation functions of softplus, ReLU, ReLU6, and exponential LU Sigmoid, hyperbolic tangent (tanh), and softsign activation function

    好了,基础性的东西介绍就先到这里,可否赞一个?你的支持就是我的动力!

    相关文章

      网友评论

        本文标题:tensorflow基础篇

        本文链接:https://www.haomeiwen.com/subject/ccmtfxtx.html