【基于tensorflow的学习】tensorflow的一些基本操作

1.CPU加速

第一个方法是从大神这学来的:https://blog.csdn.net/hq86937375/article/details/79696023

由于我用的是win7+cpu的tensorflow,所以可以使用一下语句来尽可能多地利用CPU。如果您的CPU支持AVX,AVX2和FMA,则应该从针对CPU优化的源构建tensorflow。在这个问题中已经讨论过这个问题,也是这个GitHub问题。 Tensorflow使用称为bazel的ad-hoc构建系统,构建它并不是那么简单,但肯定是可行的。在此之后,不仅警告消失,tensorflow性能也应该改善。

import tensorflow as tf
#大概就是启动CPU的一个隐藏buff吧
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

2.变量的创建以及tensorflow的计算图概念

#Create a variable,a type of "Tensor" 
#first,创建了w、x、y,只是给这三个变量创建了一个“位置”
w=tf.Variable([[0.5,1.0]])
x=tf.Variable([[2.0],[1.0]])
y=tf.matmul(w,x)
#second,将以上的变量放入init_op中
init_op=tf.global_variables_initializer()
#last,需要将变量放入计算图Session中初始化才有意义,才可以计算
with tf.Session() as sess:
    sess.run(init_op)#对变量进行初始化的操作
    print(y.eval())

3.tensorflow的一些矩阵、常数操作

tf.zeros([3,4],float)
tf.ones([3,4],float)
tensor=tf.Variable([[1,2,3,7],[4,5,6,8]])
a=tf.zeros_like(tensor)
b=tf.ones_like(tensor)
c=tf.constant([1,2,3,4,5,6])
d=tf.constant(-1.0,shape=[2,3])
e=tf.linspace(10.0,12.0,3,name="lispace")
f=tf.range(3,18,3)
init_op=tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init_op)#对变量进行初始化的操作
    print(a.eval(),'\n',b.eval(),'\n',c.eval(),'\n',d.eval(),'\n',e.eval(),'\n',f.eval())

[[0 0 0 0]
 [0 0 0 0]] 
 [[1 1 1 1]
 [1 1 1 1]] 
 [1 2 3 4 5 6] 
 [[-1. -1. -1.]
 [-1. -1. -1.]] 
 [10. 11. 12.] 
 [ 3  6  9 12 15]

4.tensorflow的随机数生成和洗牌

norm=tf.random_normal([2,3],mean=-1,stddev=4)#随机生成高斯分布的矩阵
c=tf.constant([[1,2],[3,4],[5,6]])
shuff=tf.random_shuffle(c)#重新洗牌
sess=tf.Session()#也可以这样运行计算图,但是还是建议上面的with结构
print(sess.run(norm))
print(sess.run(shuff))

[[-3.1922429  6.3587823  0.8795153]
 [-5.7082744 -5.1976805 -6.726247 ]]
[[5 6]
 [3 4]
 [1 2]]

5.tensorflow循环迭代的格式

#在tensorflow中实现循环迭代
#将计算图当中的每个步骤模块化,并在此处先初始化
state=tf.Variable(0)
new_value=tf.add(state,tf.constant(1))#加法函数
update=tf.assign(state,new_value)#赋值函数
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())#将定义好的几个模块放进计算图当中
    print(sess.run(state))
    for _ in range(3):
        sess.run(update)
        print(sess.run(state))

0
1
2
3

6.numpy to tensor的转换

#将numpy转换成tensorflow的格式
import numpy as np
a=np.zeros((3,3))
ta=tf.convert_to_tensor(a)
with tf.Session() as sess:
    print(sess.run(ta))

[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]

7.先占位置再运算

#先在计算图中占据位置,再在run的时候进行赋值运算
input1=tf.placeholder(tf.float32,shape=[2,2])
input2=tf.placeholder(tf.float32,shape=[2,2])
output=tf.matmul(input1,input2)
with tf.Session() as sess:
    print(sess.run(output,feed_dict={input1:[[1,1],[2,2]],input2:[[2,2],[1,1]]}))

[[3. 3.]
 [6. 6.]]


 

猜你喜欢

转载自blog.csdn.net/qq_29567851/article/details/83897796