tensorflow常用基本操作

我们在用tensorflow之前应该都熟练运用numpy、pandas等,其实在tensorflow中的一些操作还是跟之前的库的用法差不多的,用老中医的说法就是换汤不换药,下面我们来边用边说:

import tensorflow as tf 
a=3
w=tf.Variable([[0.5,1.0]])
x=tf.Variable([[2.0],[1.0]])

z=tf.matmul(w,x)

这上面的三行我们要调用Variable定义变量,这和我们numpy里面直接定义还是有点区别的,看起来比numpy略显复杂,不过在tensorflow中运用的好处就是,不管简单的代码,还是复杂的代码,最后写起来的工作量都差不多的

init_op=tf.global_variables_initializer()

这一步对我们所有设置的变量进行初始化,就像c语言中的声明,就表示现在我已经有这些东西了,可以拿过来用的

with tf.Session() as sess:
    sess.run(init_op)

    print(z.eval())

这一步为什么要用这个with语句呢,因为这是tensorflow,我们必须在他这个框架定义的会话框中执行,其中eval()这个函数的用处是将字符串str当成有效的表达式来求值并返回计算结果

from tensorflow import float32   定义数值类型的引用,不然下面会报错
tf.zeros([3,4],float32) 在0值得基础上,定义形状,以及数值类型
tf.zeros_like(z) 把0值赋给z这个形状的矩阵
tf.ones([2,3],float32) ones的用法也是同理
tf.ones_like(z)
tensor = tf.constant([1, 2, 3, 4, 5, 6, 7]) 定义一个常数
tensor = tf.constant(-1.0, shape=[2, 3]) 定义一个常数为固定值,并给他定义一个形状

tf.linspace(10.0, 12.0, 3, name="linspace")  这个和numpy中的用法一样

tf.range(start, limit, delta) 开始的数 结束的数 delta是两数之间的间隔


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() 这里也是一个调用会话框的方法,但基于tensorflow还是建议大家用with的方法调用会话框执行
print (sess.run(norm)) run就是跑 跑代码 这个还是非常形象的

print (sess.run(shuff))

state = tf.Variable(0) 定义一个初始变量
new_value = tf.add(state, tf.constant(1)) add的操作就是把两个数放进括号里直接进行加法
update = tf.assign(state, new_value) 使得更易于链接需要使用重置值的操作


with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())  把这个初始化语句放在run里面也是你常用的
    print(sess.run(state))    
    for _ in range(3):      
        sess.run(update)

        print(sess.run(state))    以上三句从头到尾的遍历一遍输出

import numpy as np
a = np.zeros((3,3))
ta = tf.convert_to_tensor(a)
with tf.Session() as sess:

     print(sess.run(ta))       上面的这五个语句就是把numpy定义的矩阵通过tensorflow中的函数传递过来,这种方法也不建议常                                       用,建议还是用tensorflow自己常用的方式定义

input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32) 以上两句就是先在会话框中先挖个坑,我先占着,后续我把值传进去了,我再做计算
output = tf.muliply(input1, input2)
with tf.Session() as sess:

    print(sess.run([output], feed_dict={input1:[7.], input2:[2.]})) feed_dict函数给占位符传递值

以上运行结果我没有打出来,对着代码自己去跑印象会更深刻,更有利于掌握。


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页