TF学习:Tensorflow基础案例、经典案例集合——基于python编程代码的实现
目录
相关文章
TF学习——DL框架之Tensorflow:Tensorflow的简介、安装、使用方法之详细攻略
- TF:使用Tensorflow输出一句话
- import tensorflow as tf
- import numpy as np
-
- greeting = tf.constant('Hello Google Tensorflow!')
- sess = tf.Session() 启动一个会话
- result = sess.run(greeting) 使用会话执行greeting计算模块
- print(result)
- sess.close() 关闭会话,这是一种显式关闭会话的方式
张量和图的两种方式实现:声明两个常量 a 和 b,并定义一个加法运算。先定义一张图,然后运行它,
- -*- coding: utf-8 -*-
-
- 1、张量和图的两种方式实现:声明两个常量 a 和 b,并定义一个加法运算。先定义一张图,然后运行它,
- import tensorflow as tf
- import os
- import numpy as np
- os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
-
- T1
- a=tf.constant([1,0,1,4])
- b=tf.constant([ 1 , 0 , 0 , 4 ])
- result=a+b
- sess=tf. Session ()
- print (sess.run(result))
- sess.close
- T2
- with tf.Session() as sess:
- a=tf.constant([ 1 , 0 , 1 , 4 ])
- b=tf.constant([ 1 , 0 , 0 , 4 ])
- result=a+b
- print (sess.run(result))
-
-
- 2、常量和变量
- TensorFlow 中最基本的单位是常量(Constant)、变量(Variable)和占位符(Placeholder)。常量定义后值和维度不可变,变量定义后值可变而维度不可变。在神经网络中,变量一般可作为储存权重和其他信息的矩阵,而常量可作为储存超参数或其他结构信息的变量。下面我们分别定义了常量与变量
- 声明了不同的常量(tf.constant())
- a = tf.constant( 2 , tf.int16) 声明了不同的整数型数据
- b = tf.constant( 4 , tf.float32) 声明了不同的浮点型数据
- c = tf.constant( 8 , tf.float32)
- 声明了不同的变量(tf.Variable())
- d = tf. Variable ( 2 , tf.int16)
- e = tf. Variable ( 4 , tf.float32)
- f = tf. Variable ( 8 , tf.float32)
-
- g = tf.constant(np.zeros(shape=( 2 , 2 ), dtype=np.float32))声明结合了 TensorFlow 和 Numpy
-
- h = tf.zeros([ 11 ], tf.int16) 产生全是0的矩阵
- i = tf.ones([ 2 , 2 ], tf.float32) 产生全是 1的矩阵
- j = tf.zeros([ 1000 , 4 , 3 ], tf.float64)
- k = tf. Variable (tf.zeros([ 2 , 2 ], tf.float32))
- l = tf. Variable (tf.zeros([ 5 , 6 , 5 ], tf.float32))
-
- 声明一个 2 行 3 列的变量矩阵,该变量的值服从标准差为 1 的正态分布,并随机生成
- w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
- TensorFlow 还有 tf.truncated_normal() 函数,即截断正态分布随机数,它只保留 [mean-2*stddev,mean+2*stddev] 范围内的随机数
- 案例应用:应用变量来定义神经网络中的权重矩阵和偏置项向量
- weights = tf.Variable(tf.truncated_normal([256 * 256, 10]))
- biases = tf. Variable (tf.zeros([10]))
- print (weights.get_shape().as_list())
- print (biases.get_shape().as_list())
Tensorflow之session会话的使用,定义两个矩阵,两种方法输出2个矩阵相乘的结果
- import tensorflow as tf
-
- matrix1 = tf.constant([[3, 20]])
- matrix2 = tf.constant([[6],
- [100]])
- product = tf.matmul(matrix1, matrix2)
-
- method 1,常规方法
- sess = tf.Session()
- result = sess.run(product)
- print(result)
- sess.close()
-
- method 2,with方法
- with tf.Session() as sess:
- result2 = sess.run(product)
- print(result2)
输出结果
代码设计
- TF:Tensorflow定义变量+常量,实现输出计数功能
-
- import tensorflow as tf
-
- state = tf.Variable(0, name='Parameter_name_counter')
- print(state.name)
- one = tf.constant(1)
-
- new_value = tf.add(state, one)
- update = tf.assign(state, new_value)
-
- init = tf.global_variables_initializer()
-
- with tf.Session() as sess:
- sess.run(init)
- for _ in range(8):
- sess.run(update)
- print(sess.run(state))
- TF:Tensorflow完成一次线性函数计算
- 思路:TF像搭积木一样将各个不同的计算模块拼接成流程图,完成一次线性函数的计算,并在一个隐式会话中执行。
- matrix1 = tf.constant([[3., 3.]]) 声明matrix1为TF的一个1*2的行向量
- matrix2 = tf.constant([[2.],[2.]]) 声明matrix2为TF的一个2*1的列向量
- product = tf.matmul(matrix1, matrix2) 两个算子相乘,作为新算例
- linear = tf.add(product, tf.constant(2.0)) 将product与一个标量2求和拼接.作为最终的linear算例
-
- 直接在会话中执行linear算例,相当于将上面所有的单独算例拼接成流程图来执行
- with tf.Session() as sess:
- result = sess.run(linear)
- print(result)
Python 程序生成了一些三维数据, 然后用一个平面拟合它.
- import tensorflow as tf
- import numpy as np
-
- 使用 NumPy 生成假数据(phony data), 总共 100 个点.
- x_data = np.float32(np.random.rand(2, 100)) 随机输入
- y_data = np.dot([0.100, 0.200], x_data) + 0.300
-
- 构造一个线性模型
-
- b = tf.Variable(tf.zeros([1]))
- W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
- y = tf.matmul(W, x_data) + b
-
- 最小化方差
- loss = tf.reduce_mean(tf.square(y - y_data))
- optimizer = tf.train.GradientDescentOptimizer(0.5)
- train = optimizer.minimize(loss)
-
- 初始化变量
- init = tf.initialize_all_variables()
-
- 启动图 (graph)
- sess = tf.Session()
- sess.run(init)
-
- 拟合平面
- for step in xrange(0, 201):
- sess.run(train)
- if step % 20 == 0:
- print step, sess.run(W), sess.run(b)
-
- 得到最佳拟合结果 W: [[0.100 0.200]], b: [0.300]
后期更新……
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!