遗忘了很久的,慢慢重新捡起学习。
以下内容,专业人士请勿参考。笔者创作时,只是刚刚接触Tensorflow一天,故无法用专业词汇描述。若有专业人士提供指导,定当不胜感激。
1,Tensorflow的Session:
从笔者当天随视频敲的代码中,结合Session的中文翻译,笔者认为Session是一个会话,即围绕某个主题而展开的一连串代码的活动。相当于码农告诉机器这段代码是干嘛用的。
2,Session两种方式:
方式1:
sess = tf.Session();
sess.run(xxxx);
sess.close();#非必须
方式2:
with tf.Session() as sess:
sess.run(xxxxx);
两种方式目前由于笔者能力有限,暂不知各有什么优缺点。难道是第二种好看些?
3,Tensorflow的Variable
变量,顾名思义变化的量,这个世界因为变化而美丽。
变量的运算可以用add方法等。需要注意的是,在新版本Tensorflow中,变量的乘法已经变更为multiply。mul被移除了
使用变量一定要初始化。
使用变量一定要初始化。
使用变量一定要初始化。
重要的事情说三遍。
代码实例如下
init = tf.global_variables_initializer();
with tf.Session() as sess:
sess.run(init);
4,Tensorflow的placeholder
占位符,主要用于如下用途:
当Tensorflow需要根据外部传参来决定程序的下一步时,占位符限制的传入参数的类型。
其作用,类似java等语言的function中,参数的类型修饰符的作用。
代码实例如下:
import tensorflow as tf;
input1 = tf.placeholder(tf.float32);
input2 = tf.placeholder(tf.float32);
output = tf.multiply(input1,input2);
with tf.Session() as sess:
print(sess.run(output,
feed_dict={
input1:[7.],
input2:[2.]
}));
5,Tensorflow的optimizer
优化器,其作用就是tensorflow以某种方式不断训练(train)模型,从而不断减小失真(loss)。
(此段描述非专业,随着学习的深入,会逐渐修正上述描述。)
代码示例如下
#导入相关包
import tensorflow as tf;
import numpy as np;
#创建目标数据
x_data = np.random.rand(100).astype(np.float32);
y_data = x_data*0.1+0.3
#创建tensorflow结构
Weight = tf.Variable(tf.random_uniform([1],-1.0,1.0));
biases = tf.Variable(tf.zeros([1]));
y = x_data*Weight + biases;
#计算当前值与目标值的差值,类似失真度的概念,
#tensorflow的核心就是通过不断缩小loss的值来接近期望值
loss = tf.reduce_mean(tf.square(y-y_data));
#定义一个优化
optimizer = tf.train.GradientDescentOptimizer(0.5);
train =optimizer.minimize(loss);
init = tf.initialize_all_variables();
#定义一个Session
sess = tf.Session();
sess.run(init);#此时才真正的初始化变量
for step in range(200):
sess.run(train);
if(step%20 == 0):
print(step,sess.run(Weight),sess.run(biases));