TensorFlow(TensorFlow学习)常见的函数介绍

1.tf.multiply()两个矩阵中对应元素各自相乘

2.tf.matmul()将矩阵a乘以矩阵b,生成a * b

3.tf.Variable:主要在于一些可训练变量(trainable variables),比如模型的权重(weights,W)或者偏执值(bias); 声明时,必须提供初始值; 名称的真实含义,在于变量,也即在真实训练时,其值是会改变的,自然事先需要指定初始值;

weights = tf.Variable( tf.truncated_normal([IMAGE_PIXELS, hidden1_units], stddev=1./math.sqrt(float(IMAGE_PIXELS)), name='weights') )
biases = tf.Variable(tf.zeros([hidden1_units]), name='biases')

4.tf.placeholder(dtype, shape=None, name=None):用于得到传递进来的真实的训练样本: 不必指定初始值,可在运行时,通过 Session.run 的函数的 feed_dict 参数指定; 这也是其命名的原因所在,仅仅作为一种占位符;

dtype:数据类型。常用的是tf.float32,tf.float64等数值类型
shape:数据形状。默认是None,就是一维值,也可以是多维,比如[2,3], [None, 3]表示列是3,行不定
name:名称。

x = tf.placeholder(tf.float32, shape=(1024, 1024))  
y = tf.matmul(x, x)    
with tf.Session() as sess:  
  print(sess.run(y))  # ERROR: 此处x还没有赋值.    
  rand_array = np.random.rand(1024, 1024)  
  print(sess.run(y, feed_dict={x: rand_array}))  # Will succeed.  

4.使用flags定义命令行参数(第一个是参数名称,第二个参数是默认值,第三个是参数描述)注释:当程序tf.app.run()函数时,它会跳到main()中执行,通过tf.app.flags.DEFINE_string()函数来增加变量,mian()里面通过FLAGS.加上你上面增加的参数名字来引用变量。和C/C++编写main函数中的argv一样,tf框架下也封装了tf.app.flags.DEFINE_XXXX()函数用于定义参数,便于命令行形式传递参数。常见的函数形式如下:

flags.DEFINE_float(参数1,参数2,参数3)

tf.app.flags.DEFINE_string('str_name', 'def_v_1',"descrip1")
tf.app.flags.DEFINE_integer('int_name', 10,"descript2")
tf.app.flags.DEFINE_boolean('bool_name', False, "descript3")

5.为什么要用placeholder?

Tensorflow的设计理念称之为计算流图,在编写程序时,首先构筑整个系统的graph,代码并不会直接生效,这一点和python的其他数值计算库(如Numpy等)不同,graph为静态的,类似于docker中的镜像。然后,在实际的运行时,启动一个session,程序才会真正的运行。这样做的好处就是:避免反复地切换底层程序实际运行的上下文,tensorflow帮你优化整个系统的代码。我们知道,很多python程序的底层为C语言或者其他语言,执行一行脚本,就要切换一次,是有成本的,tensorflow通过计算流图的方式,帮你优化整个session需要执行的代码,还是很有优势的。 所以placeholder()函数是在神经网络构建graph的时候在模型中的占位,此时并没有把要输入的数据传入模型,它只会分配必要的内存。等建立session,在会话中,运行模型的时候通过feed_dict()函数向占位符喂入数据。

tf.placeholder(dtype, shape=None, name=None)
Tensorflow中,dtype主要有以下几种数据类型如下
tf.int8:8位整数。
tf.int16:16位整数。  
tf.int32:32位整数。
tf.int64:64位整数。
tf.uint8:8位无符号整数。 
tf.uint16:16位无符号整数。
tf.float16:16位浮点数。
tf.float32:32位浮点数。
tf.float64:64位浮点数。
tf.double:等同于tf.float64。 
tf.string:字符串。  tf.bool:布尔型。 
tf.complex64:64位复数。   
tf.complex128:128位复数。

6. tf.equal()、tf.cast()、tf.reduce_mean()三个函数的使用

1 语法
tf.equal(x, y) 判断x, y是否相等,相等返回true,不相等false

import tensorflow as tf
x = [1, 3, 0, 2]
y = [1, 4, 2, 2]
equal = tf.equal(x, y)
with tf.Session() as sess:
    print(sess.run(equal))

输出:
[ True False False True]
2 语法
tf.cast(x, dtype, name=None) 数据类型转换
x 待转换的数据 dtype 目标数据类型 name=None 操作的名称

import tensorflow as tf
x = [1, 3, 0, 2]
y = [1, 4, 2, 2]
equal = tf.equal(x, y)
type = tf.cast(equal, tf.float32)
with tf.Session() as sess:
    print(sess.run(type))

输出:
[1. 0. 0. 1.]
3 语法
tf.reduce_mean() 求均值,上面的代码最后一行改为:

print(sess.run(tf.reduce_mean(type)))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值