TensorFlow 基础

参考资料:

原博客链接:https://www.jianshu.com/p/d9ab35b56ab8

TensorFlow.js官网api https://js.tensorflow.org/api

python的参考文档:https://www.tensorflow.org/api_docs/python/tf

TensorFlow.js例子https://js.tensorflow.org/tutorials/fit-curve.html

TensorFlow各种激活函数:https://www.tensorflow.org/api_guides/python/nn

TensorFlow的游乐场 http://playground.tensorflow.org

python绘图matplotlib https://matplotlib.org

TensorFlow程序的流程

1.定义算法的计算图(graph)结构

2.使用会话(session)执行计算

TensorFlow中图:节点(operation),边:Tensor

会话:(session)运行静态图的某一个部分,启动图的一部分

基础知识:

每个TF都有一个默认的图

张量:值不可变tf.tensor

0阶张量为标量

1阶张量为向量

2阶张量为矩阵

3阶张量为体积(暂且这样说吧)

变量 :tf.Variable 用一个张量值来初始化的,可用assign方法给一个存在的变量分配一个新张量,值可变。用于模型训练时候,数据的保存和更新.变量通常贯穿于机器学习模型的整个生命周期中,在 TensorFlow.js 中,即使是在 tf.tidy 里创建,js也不会清理它们;但是,你可以手动调用 dispose。

有了变量必须还要使用tf.initialize_all_variables()来初始化变量。

操作:operations(ops) 操作张量,返回新张量,原张量值不变

有square,add,sub等,支持嵌套操作

tf.tidy 执行后就会清除所有中间新建的 tensors 来达到释放 GPU 内存,但不会消除内部的返回值。

模型和层:一个函数及一个模型,给定相应输入得到期望输出

tf.mode是一个模型,可以是线性模型,有了模型以后就可以往里面添加层

tf.sequential 一层的输入是下一层的输出,拓扑排序是线性的栈

tf.layers.dense 全连接层,添加一个层,即初学的add_layer()函数

dense(
inputs,
units,
activation=None,
use_bias=True,
kernel_initializer=None,
bias_initializer=tf.zeros_initializer(),
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
trainable=True,
name=None,
reuse=None
)

inputs: 输入数据,2维tensor.

units: 该层的神经单元结点数。

inputshape:[1,2,3]的shape是(3,);一个二阶的张量[[1,2,3],[4,5,6]]的shape是(2,3);一个三阶的张量[[[1],[2],[3]],[[4],[5],[6]]]的shape是(2,3,1)

activation: 激活函数.

use_bias: Boolean型,是否使用偏置项.

kernel_initializer: 卷积核的初始化器.

bias_initializer: 偏置项的初始化器,默认初始化为0.

kernel_regularizer: 卷积核化的正则化,可选.

bias_regularizer: 偏置项的正则化,可选.

activity_regularizer: 输出的正则化函数.

trainable: Boolean型,表明该层的参数是否参与训练。如果为真则变量加入到图集合中 GraphKeys.TRAINABLE_VARIABLES (see tf.Variable).

name: 层的名字.

reuse: Boolean型, 是否重复使用参数.

tf.Session相当于一个指针,指针指着什么,就能查看什么或者使哪一个运行起来。

tf.placeholder 占位符,输入变量暂存的地方。

tf.feed_dict 字典填充函数,使输入输出变得简单

cross_entropy 交叉熵,用来衡量人工神经网络ANN的预测值与实际值的一种方式。

交叉熵代价函数:

好吧没看懂,总之训练效果比二次代价函数要好。完毕!

as for training model, we need to do three things first

  • A loss function, which measures how well a given polynomial fits the data. The lower the loss value, the better the polynomial fits the data.

  • An optimizer, which implements an algorithm for revising our coefficient values based on the output of the loss function. The optimizer’s goal is to minimize the output value of the loss function.

  • A training loop, which will iteratively run the optimizer to minimize loss.

minimize最神奇的地方,自动调整参数诶,哇哦

1535707394705

TensorBoard读取并展示日志

tensorboard –logdir = 日志所在路径

搭建神经网络:

1.构建数据

2.构建模型

3.构建loss函数

4.构建优化器opt 一般用tf.train.GradientDescentOptimizer(learn rate)

5.train = opt.minimize(loss)

6.构建会话sess=tf.Session() 并初始化变量

7.每一次训练都需要减小化loss sess.run(opt.minimize(loss)) 此处的minimize很神奇,自动去调节权重和偏差。