TensorFlow 基础概念
对于Tensorflow的运作方式还不是很理解的同学一定要将上面这个图牢牢记在脑海中。
在学习基础概念和新的代码的时候,不断将所学跟途中的信息做对照。
这张图的第一层理解就是,当有一个输入时,Tensorflow会根据这个输入值产生相应的输出值。如果这个输出值与实际的值有偏差,那么Tensorflow会对神经网络中的参数进行调整。
以使得以下一的输出值更加靠近真实的结果。
经过不断的重复学习,神经网络不断调整,最后达到输出结果与我们想要的结果一致。
体现在公式中,每次学习公式中的W(权重)和B(偏移)都会得到改变和更新。
(未完待续)
1Session
我们先定义要执行的结构:
matrix1 = tf.constant([3,3]) matrix2 = tf.constant([[2],[2]]) product = tf.matmul(matrix1,matrix2)
session使用方法1
sess = tf.Session() result = sess.run(product) print(result) sess.close()
session使用方法2
with tf.Session as sess: result = sess.run(product) print(result)
第一种方法需要手动执行sess.close()方法来释放资源,而且如果程序因为异常退出将不会执行close方法,从而导致资源泄露。所以更推荐使用第二种方法来执行。
2Variable
定义变量的意思。在tensorflow中,一定要用variable定义变量。
这个变量就是会根据不断的学习过程发生改变,以使得预测结果靠近的预期值(真实值?)的变量。
在使用变量的时候 tf.global_variables_initializer() 来初始化变量。
这里是个简单的例子:
state = tf.Variable(0,name='counter') one = tf.constant(1) new_value = tf.add(state,one) update = tf.assign(state,new_value) init = tf.global_variables_initializer() with tf.Session() as sess: sess.run(init) for _ in range(3): sess.run(update) print(sess.run(state))
运行结果:
1
2
3
3placeholder 与 feed_dict
在session run 运行的过程中从外界传入值,进行运算。
input1 = tf.placeholder(tf.float32) input2 = tf.placeholder(tf.float32) output = tf.mul(input1,input2) with tf.Session () as sess: print(sess.run(output,feed_dict={input1:[7],input2:[2]}))
运行结果
[14]
4Activation Function
有人说翻译成“激活函数”(activation function)会更好,因为主要作用是分割数据,判断该“神经”是否被激活。比如说,当你判断面前的动物是否是一只猫的时候,你会从各个部分去判断。比如眼睛,当你觉得确实像猫的眼睛时,判断眼睛的神经数值会特别高,如果觉得比较像,则会相对低一点,在神经网络算法中,可以说,激励函数就是分割这个神经判断是与否的准则。
参考链接
https://applenob.github.io/tf_1.html
(Tensorflow 基础概念)
http://blog.csdn.net/jerry81333/article/details/52979206
(激励函数)