第一个方法是从大神这学来的: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'
#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())
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]
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]]
#在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
#将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.]]
#先在计算图中占据位置,再在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.]]