• 【1-1】创建图、启动图、变量


    
    

    #1.Tensorflow用图(graph)来表示计算任务,图中的节点被称之为operation(op);
    #2.一个节点获得0个或多个张量tensor,执行计算,产生0个或多个张量;
    #3.图必须在会话(Session)里被启动,会话(Session)将图中的op分发到CPU或GPU之类的设备上,
    # 同时提供执行op的方法,这些方法执行后,将产生的张量(tensor)返回;

     1 import tensorflow as tf
     2 
     3 #创建一个常量tensor
     4 m1 = tf.constant([[3,3]])
     5 #创建一个常量tensor
     6 m2 = tf.constant([[2],[3]])
     7 #创建一个矩阵乘法op,把m1和m2传入
     8 product = tf.matmul(m1,m2)
     9 print(product)
    10 
    11 >>Tensor("MatMul:0", shape=(1, 1), dtype=int32)
    12 
    13 #定义一个会话,启动默认图
    14 sess = tf.Session()
    15 #调用sess的run方法来执行矩阵乘法op
    16 #run(product)触发了图中3个op
    17 result = sess.run(product)
    18 print(result)
    19 sess.close()
    20 
    21 >>[[15]]
    22 
    23 with tf.Session() as sess:
    24     #调用sess的run方法来执行矩阵乘法op
    25     #run(product)触发了图中3个op
    26     result = sess.run(product)
    27     print(result)
    28 
    29 >>[[15]]

    eg2.变量

     1 import tensorflow as tf
     2 
     3 #1.创建Tensors(变量)
     4 #2.编写Tensors间的操作符op
     5 #3.初始化Tensors
     6 #4.创建Session
     7 #5.运行Session
     8 
     9 y_hat = tf.constant(36,name='y_hat')         #定义一个常量y_hot,值为36
    10 y = tf.constant(39,name='y')                 #定义一个常量y,值为39
    11 
    12 loss = tf.Variable((y-y_hat)**2,name='loss') #创建一个变量
    13 
    14 init = tf.global_variables_initializer()     #当执行session.run(init)时,变量loss会被初始化并且做好了计算的准备
    15 
    16 with tf.Session() as sess:                   #创建一个Session会话用于print输出
    17     sess.run(init)                           #初始化变量
    18     print(sess.run(loss))                    #运行Session会话并输出loss
     1 x = tf.Variable([1,2])
     2 a = tf.constant([3,3])
     3 #增加一个减法op
     4 sub = tf.subtract(x,a)
     5 #添加一个加法op
     6 add = tf.add(x,sub)
     7 #初始化
     8 init = tf.global_variables_initializer()
     9 #定义一个会话
    10 with tf.Session() as sess:
    11     sess.run(init)
    12     print(sess.run(sub))
    13     print(sess.run(add))

    eg3.实现加一操作

     1 #创建一个变量初始化为0
     2 state = tf.Variable(0,name='counter')
     3 #创建一个op,作用是使state加1
     4 new_value = tf.add(state,1)
     5 #赋值op
     6 update = tf.assign(state,new_value)
     7 #变量初始化
     8 init = tf.global_variables_initializer()
     9 
    10 with tf.Session() as sess:
    11     sess.run(init)
    12     print(sess.run(state))
    13     #循环5次
    14     for _ in range(5):    #循环5次
    15         sess.run(update)
    16         print(sess.run(state))
    17 
    18 0
    19 1
    20 2
    21 3
    22 4
    23 5

    eg4.Fetch and Feed

     1 import tensorflow as tf
     2 
     3 #Fetch同时运行多个op
     4 input1 = tf.constant(3.0)
     5 input2 = tf.constant(2.0)
     6 input3 = tf.constant(5.0)
     7 
     8 add = tf.add(input2,input3)
     9 mul = tf.multiply(input1,add)
    10 #定义一个会话
    11 with tf.Session() as sess:
    12     result = sess.run([mul,add])   #sess.run(fetches)
    13     print(result)
    1 #Feed
    2 #创建占位符,即placeholder对象
    3 input1 = tf.placeholder(tf.float32)
    4 input2 = tf.placeholder(tf.float32)
    5 output = tf.multiply(input1,input2)
    6 
    7 with tf.Session() as sess:
    8     #feed的数据以字典的形式传入
    9     print(sess.run(output,feed_dict={input1:7.0,input2:3.0}))  #Shift+Tab快捷键

     1 def sigmoid(z):
     2     
     3     #创建一个placeholder对象
     4     x = tf.placeholder(tf.float32,name='x')
     5     
     6     #利用tf的sigmoid()函数计算sigmoid
     7     sigmoid = tf.sigmoid(x)
     8     
     9     #创建Session并运行
    10     #通过feed_dict把z的值传给x
    11     with tf.Session() as sess:
    12         result = sess.run(sigmoid,feed_dict={x:z})  #调用的时候通过feed_dict把值传入(字典形式)
    13     return result

     1 #分别使用feeds和fetches来填充数据和抓取任意的操作结果
     2 import tensorflow as tf
     3 import numpy as np
     4 
     5 #用numpy随机生成100个数据
     6 x_data = np.float32(np.random.rand(2,100))     #2*100
     7 y_data = np.dot([0.100,0.200],x_data) + 0.300  #点乘1*100
     8 
     9 #构建一个线性模型
    10 b = tf.Variable(tf.zeros([1]))                    #偏置值初始化0
    11 W = tf.Variable(tf.random_uniform([1,2],-1.0,1.0))#权值1*2
    12 y = tf.matmul(W,x_data) + b                       #矩阵乘法
    13 
    14 #最小化方差
    15 loss = tf.reduce_mean(tf.square(y-y_data))        #二次代价函数
    16 optimizer = tf.train.GradientDescentOptimizer(0.5)#梯度下降法
    17 train = optimizer.minimize(loss)                  #使loss值最小
    18 
    19 #初始化变量
    20 init = tf.initialize_all_variables()
    21 
    22 #启动图(graph)
    23 sess = tf.Session()
    24 sess.run(init)
    25 
    26 #拟合平面
    27 for step in range(0,201):
    28     sess.run(train)
    29     if step % 20 ==0:
    30         print(step,sess.run(W),sess.run(b))
    31 >>>
    32 0 [[ 0.02679617  0.70638967]] [ 0.14400235]
    33 20 [[ 0.09697476  0.33242896]] [ 0.23280086]
    34 40 [[ 0.10429206  0.23750198]] [ 0.27829513]
    35 60 [[ 0.10234147  0.21088448]] [ 0.29313114]
    36 80 [[ 0.10091921  0.20321539]] [ 0.29785267]
    37 100 [[ 0.10032131  0.20096155]] [ 0.29933372]
    38 120 [[ 0.10010624  0.20028993]] [ 0.29979423]
    39 140 [[ 0.10003407  0.2000879 ]] [ 0.29993665]
    40 160 [[ 0.10001072  0.20002674]] [ 0.29998055]
    41 180 [[ 0.10000334  0.20000815]] [ 0.29999405]
    42 200 [[ 0.10000104  0.20000252]] [ 0.29999816]

     2019-05-30 10:24:15

  • 相关阅读:
    20034 #917
    loj3066
    P5391
    Hive on spark和Hive on mr在处理orc格式表格时数据不一致问题探究
    解决自定义Spark的jar包提交到yarn上使用cluster模式执行时报错keberos用户找不到问题
    三个文件教你写一个命令行终端[electron实战]
    按钮点击防止双击
    uniapp-base64加密解密(不会中文乱码)
    Android Studio 2021.3.1 阿里云盘分享地址
    Oracle——创建多个实例(数据库)、切换实例、登录数据库实例
  • 原文地址:https://www.cnblogs.com/direwolf22/p/10948088.html
Copyright © 2020-2023  润新知