Tensorflow之常用方法总结(1)

来源:互联网 发布:淘宝店铺标题图片 编辑:程序博客网 时间:2024/06/16 17:25

本文将对Tensorflow中的常用方法进行总结。

TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU。一般你不需要显式指定使用 CPU 还是 GPU, TensorFlow 能自动检测。如果检测到 GPU, TensorFlow 会尽可能地利用找到的第一个 GPU 来执行操作.并行计算能让代价大的算法计算加速执行,TensorFlow也在实现上对复杂操作进行了有效的改进。

Tensorflow中,主要有以下几种数据类型。

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位复数。

下面介绍的方法如下

操作组 操作 Maths Add, Sub, Mul, Div, Exp, Log, Greater, Less, Equal Array Concat, Slice, Split, Constant, Rank, Shape, Shuffle Matrix MatMul, MatrixInverse, MatrixDeterminant Neuronal Network SoftMax, Sigmoid, ReLU, Convolution2D, MaxPool Checkpointing Save, Restore Queues and syncronizations Enqueue, Dequeue, MutexAcquire, MutexRelease Flow control Merge, Switch, Enter, Leave, NextIteration

TensorFlow的算术操作如下:

import tensorflow as tf#定义‘符号’变量,也称为占位符x = tf.placeholder("float")y = tf.placeholder("float")z = tf.placeholder("float")#构造一个op节点add    = tf.add(x, y)    #求和sub    = tf.sub(x, y)    #减法mul    = tf.mul(x, y)    #乘法div    = tf.div(x, y)    #除法mod    = tf.mod(x,y)     #取模ads    = tf.abs(z)       #求绝对值neg    = tf.neg(z)       #取负sign   = tf.sign(z)      #返回符号square = tf.square(x)    #计算平方round  = tf.round(x)     #舍入最接近的整数sqrt   = tf.sqrt(x)      #开根号pow    = tf.pow(x, y)    #幂次方exp    = tf.exp(x)       #计算e的次方log    = tf.log(x)       #计算log,一个输入计算e的ln,两输入以第二输入为底max    = tf.maximum(x,y) #最大值min    = tf.maximum(x,y) #最小值cos    = tf.cos(x)       #三角函数cosinesin    = tf.sin(x)       #三角函数sintan    = tf.tan(x)       #三角函数tanatan   = tf.atan(x)      #三角函数ctansess = tf.Session() #建立会话#运行会话,输入数据,并计算节点print(sess.run(add, feed_dict={x: 3, y: 3}))print(sess.run(sub, feed_dict={x: 3, y: 3}))print(sess.run(mul, feed_dict={x: 3, y: 3}))print(sess.run(div, feed_dict={x: 3, y: 3}))print(sess.run(mod, feed_dict={x: 3, y: 3}))print(sess.run(ads, feed_dict={z: -3}))print(sess.run(neg, feed_dict={z: -3}))print(sess.run(sign, feed_dict={z: -3}))print(sess.run(square, feed_dict={x: 3, y: 3}))print(sess.run(round, feed_dict={x: 3.2}))print(sess.run(sqrt, feed_dict={x: 9}))print(sess.run(pow, feed_dict={x: 3, y: 3}))print(sess.run(exp, feed_dict={x: 3}))print(sess.run(log, feed_dict={x: 3}))print(sess.run(max, feed_dict={x: 3, y: 5}))print(sess.run(min, feed_dict={x: 3, y: 1}))print(sess.run(cos, feed_dict={x: 3}))print(sess.run(sin, feed_dict={x: 3}))print(sess.run(tan, feed_dict={x: 3}))print(sess.run(atan, feed_dict={x: 3}))# 任务完成, 关闭会话.sess.close()

结果如下

6.00.09.01.00.03.03.0-1.09.03.03.027.020.08551.098615.03.0-0.9899920.14112-0.1425471.24905Process finished with exit code 0

张量操作Tensor Transformations

  • 数据类型转换
import tensorflow as tf#定义‘符号’变量,也称为占位符x = tf.placeholder("float")y = tf.placeholder("float")z = tf.placeholder("string")#构造一个op节点result1 = tf.string_to_number(z) #字符串转为数字result2 = tf.to_double(x)        #转为64位浮点类型–float64result3 = tf.to_float(x)         #转为32位浮点类型–float32result4 = tf.to_int32(x)         #转为32位整型–int32result5 = tf.to_int64(x)         #转为64位整型–int64result6 = tf.cast(x, tf.int32)    #将x或者x.values转换为dtypesess = tf.Session()print(sess.run(result1, feed_dict={z: "-3"}))print(sess.run(result2, feed_dict={x: 3}))print(sess.run(result3, feed_dict={x: 3}))print(sess.run(result4, feed_dict={x: 3}))print(sess.run(result5, feed_dict={x: 3}))print(sess.run(result6, feed_dict={x: 3}))# 任务完成, 关闭会话.sess.close()

结果如下

-3.03.03.0333Process finished with exit code 0
  • 形状操作Shapes and Shaping
import tensorflow as tf#定义‘符号’变量,也称为占位符t = [[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]]]print(tf.shape(t))  #返回数据的shapeprint(tf.size(t))   #返回数据的元素数量print(tf.rank(t))   #返回tensor的rank,注意:此rank不同于矩阵的rank,tensor的rank表示一个tensor需要的索引数目来唯一表示任何一个元素,也就是通常所说的 “order”, “degree”或”ndims”ret = tf.reshape(t, [3,4]) #改变tensor的形状print(tf.shape(ret))at = tf.expand_dims(t, 1) #插入维度1进入一个tensor中print(tf.shape(at))

结果如下

Connected to pydev debugger (build 171.4249.47)Tensor("Shape:0", shape=(3,), dtype=int32)Tensor("Size:0", shape=(), dtype=int32)Tensor("Rank:0", shape=(), dtype=int32)Tensor("Shape_1:0", shape=(2,), dtype=int32)Tensor("Shape_2:0", shape=(4,), dtype=int32)Process finished with exit code 0
阅读全文
2 0