概述
基本用法
-
构建图
构建图的第一步是创建原算子。源算子不需要任何输入,例如常量。源算子的输出传递给其他算子做运算
Python库中,算子构造器的返回值代表被构造出的算子的输出,这些返回值可以传递给其他算子作为输入
-
简单实用
import tensorflow as tf #构造器返回值代表常量算子的返回值 matrix1 = tf.constant([[3., 3.]]) #创建另外一个常量算子 matrix2 = tf.constant([[2.],[2.]]) #进行矩阵运算 product = tf.matmul(matrix1,matrix2) #启动默认图 sess = tf.Session() #触发图中三个算子的执行 res = sess.run(product) print(res) #任务完成关闭会话 sess.close()
-
会话关闭方式
with tf.Session() as sess: res = sess.run([product])
-
实用多个cpu或GPU等
with tf.Session() as sess: with tf.device("/gpu:1"): ....
设备用字符串进行标识。目前支持的设备包括
a. “/cpu:0”:机器的CPU
b. “/gpu:0”:机器的第一个GPU
c. “/gpu:1”:机器的第二个GPU
-
交互式实用
为了便于使用诸如IPython之类的Python交互环境,可以使用InteractiveSession代替Session类,使用Tensor.eval()和Operation.run()方法代替Session.run()。这样可以避免使用一个变量来持有会话。
import tensorflow as tf sess = tf.InteractiveSession() x = tf.Variable([1,2]) a = tf.constant([3,3]) x.initializer.run() ad = tf.add(x,a) print(ad.eval())
-
常量
-
tf.constant创建常量
#原型:tf.constant(value,dtype=None,shape=None,name='Const',verify_shape=False) #直接使用numpy进行赋值 import tensorflow as tf import numpy as np tensor = tf.constant(np.arange(12).reshape((2,6))) #使用tensorflow自带的方法 tensor = tf.constant([1,2,3,3],shape=(2,2),name='matric') tensor = tf.constant([[1,2],[3,3]]name='matric')
-
tf.zeros创建常量
tensor = tf.zeros((2,3),dtype=tf.float32,name=None) tensor = tf.ones((2,3),dtype=tf.float32,name=None)
-
递增序列创建常量
tensor=tf.linspace(start=1.,stop=10.,num=10,name=None) tensor=tf.range(10,delta=2,name=None) tensor=tf.range(1,10,delta=2)
-
使用特殊分布常量
tf.random_normal(shape,mean = 0,stddev = 1,dtype = tf.float32,seed = None,name = None) tf.truncated_normal(shape,mean = 0,stddev = 1,dtype = tf.float32,seed = None,name = None) tf.random_uniform(shape,minval = 0.0,maxval = 1.0,dtype = tf.float32,seed = None):这个函数生成从0到1中平均分布的数值。 tf.random_shuffle(value,seed = None,name = None):传入一个tensor,然后将这个rensor进行随机洗牌。
- 变量
-
创建
变量维护图执行过程中的状态信息,其必须先进行初始化才能使用,变量也可以进行分享和保存,变量部分主要有新建、初始化、保存与读取、分享、更新等几个部分
两个常用的创建方法如下:
a.tf.Variable(initial_value=None, trainable=True, collections=None,validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None) b. tf.get_variable(name, shape=None, dtype=None, initializer=None, regularizer=None, trainable=True, collections=None, caching_device=None, partitioner=None, validate_shape=True, custom_getter=None)
以下示例说明了两个方法的差异
w_1 = tf.Variable(3,name="w_1") w_2 = tf.Variable(1,name="w_1") print(w_1.name) print(w_2.name) ##输出为:w_1:0与w_1_1:0 w_1 = tf.get_variable(name="w_1",initializer=1) w_2 = tf.get_variable(name="w_1",initializer=2) ##此处报错 with tf.variable_scope("scope1"): w1 = tf.get_variable("w1", shape=[]) w2 = tf.Variable(0.0, name="w2") with tf.variable_scope("scope1", reuse=True): w1_p = tf.get_variable("w1", shape=[]) w2_p = tf.Variable(1.0, name="w2") print(w1 is w1_p, w2 is w2_p) ##输出:True False
-
初始化
tensorflow中所有的变量在架构的时候都是一个框架,并没有具体的值,在初始化之后才有了具体的值。主要的初始化器如下:
1)tf.variables_initilizer(var_list,name = “nint”) :对指定的一个变量列表进行初始化
2)tf.global_variables_initializer() :对所有的变量进行初始化。
3)tf.gloable_variables() :显示图中所有的变量,包括可训练的和不可训练的变量。
4)tf.trainable_variables() :显示图中可训练的变量,除非创建变量时指定trainable=False,否则均为可训练的。返回的结果是一个变量的列表,变量名是在定义变量的时候命名的名字:name=xxx。如果定义变量时没有显示命名,那么列表中的变量名为:Variable:0 Variable_1:0 Variable_2:0 …………
5)tf.assert_variables_initialized(var_list) 判断传入的变量列表是否已经初始化,如果还有没初始化的,就报错。注意:这里的初始化只是在计算图中定义了这样的一个节点,这个节点的运算是将变量进行初始化,所以在实际计算中,还是要调用seee.run(initializer),才能真正的完成初始化过程。
深度学习使用
- 基本使用
-
导入模块
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt
-
输入与输出
x_data = np.linspace(-0.5,0.5,200).reshape((-1,1)) noise = np.random.normal(0,0.02,x_data.shape) y_data = np.square(x_data)+noise x = tf.placeholder(tf.float32,[None,1]) y = tf.placeholder(tf.float32,[None,1]) Weight_L1 = tf.Variable(tf.random.normal([1,10])) baise_L1 = tf.Variable(tf.zeros([1,10])) Wx_plus_b_L1 = tf.matmul(x,Weight_L1)+baise_L1 L1 = tf.nn.tanh(Wx_plus_b_L1) Weight_L2 = tf.Variable(tf.random_normal([10,1])) baise_L2 = tf.Variable(tf.zeros([1,1])) Wx_plut_b_L2 = tf.matmul(L1,Weight_L2)+baise_L2
-
优化器
predition = tf.nn.tanh(Wx_plut_b_L2) loss = tf.reduce_mean(tf.square(y-predition)) train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
-
运行代码
with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for _ in range(3000): sess.run(train_step,feed_dict={x:x_data,y:y_data}) predition_value = sess.run(predition,feed_dict={x:x_data}) plt.figure() plt.scatter(x_data,y_data) plt.plot(x_data,predition_value)
最后
以上就是调皮黑米为你收集整理的TensorFlow (人工智能)的全部内容,希望文章能够帮你解决TensorFlow (人工智能)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复