代码实现

tensorflow版本的hello world

# 引入tensorflow
import tensorflow as tf

# 创建一个常量
hw = tf.constant('hello world')

# 启动一个session会话
sess = tf.Session()

# 运行计算流图
print(sess.run(hw))

Tensorflow的编程模式

一般有两种编程模式
1.命令式编程 -> Torch 机器学习框架
2.符号式编程 -> Tensorflow

tensorflow的基础结构

图的基本构成
    数据流图
        Tensor(张量)
        输入      输出
        Operation(操作)
        
    数据模型 -> Tensor(张量)
    计算模型 -> Graph(图)
    运行模型 -> Session(会话)

图(Graph)和会话(Session)

数据流图
    data    Flow    Graph
    数据  流       图

什么是图?
什么是会话?

python常用库Numpy的使用

Tensorflow和Numpy有一定的联系
在Tensorflow中的Tensor和Numpy的概念很相似,也有许多相似的API

Numpy它是一个科学计算库
    官网: www.numpy.org

什么是Tensor(张量)

张量的维度

tensor的属性 -> 数据类型 dtype
              -> 形状 Shape
              
几种Tensor
    Constant[常量] -> 值不能改变的一种Tensor [张量]
    Placeholder -> 占位符 先占住一个固定位置,之后往里面添加值的一种Tensor
    Variable[变量] -> 值可改变
    SparseTensor -> 稀疏张量 一种“稀疏”的Tensor,类似线性代数里的稀疏矩阵的概念 [在矩阵中,元素为0的数多于其他元素个数]

tensor 表示法

Tensor("Mul:0", shape=(), dtype=float32)
        里面的是的意思是:名称 索引 图形 数据类型

图和会话原理及案例_1

import tensorflow as tf
c = tf.constant([[2, 3], [4, 5]], name="const_1", dtype=tf.int64)
print(c)
sess = tf.Session()
print(sess)

# TensorFlow中有默认的图
if c.graph is tf.get_default_graph():
    print("c的计算图是tensorflow默认的")

图和会话及原理_2

# 图和会话
import tensorflow as tf

# 创建两个常量

# 一行两列
const_1 = tf.constant([[2, 2]])

# 两行一列
const_2 = tf.constant([[4],
                   [4]])

# 矩阵相乘
multiple = tf.matmul(const_1, const_2)

# 尝试用print输出
print(multiple)

# 创建session对象
sess = tf.Session()

result = sess.run(multiple)
print(result)

if const_1.graph is tf.get_default_graph():
    print('const_1所在的图是当前上下文默认的图')
sess.close()

# 第二种方法创建和关闭session

# 使用tf.Session构建会话对象 with [上下文管理器]
with tf.Session() as sess:
    result_2 = sess.run(multiple)
    print('使用with打印的结果: ', result_2)
    # sess.close()

可视化利器 TensorBoard

使用tensorboard读取并展示日志
** tensorboard --logdir=日志所在路径

summary
用于导出关于模型的精简信息的方法
可以使用tensorboard等工具访问这些信息

命名空间
    name_scope
    它很像一些编程语言(C++)的namespace,包含/嵌套的关系

模拟游乐园 playGround

JavaScript编写的网页应用
通过浏览器就可以训练简单的神经网络
训练过程可视化,高度可定制

官网:https://playground.tensorflow.org

常用的python库:Matplotlib

matplotlib的含义:
                matrix 矩阵
                plot 绘图
                library 库
                
一个极其强大的python绘图库,官网:matplotlib.org
它可以用很少的代码即可绘制2D/3D,静态/动态等各种图形
一般用的是它的子包:PyPlot,提供类似MATLAB的绘图框架

Matplotlib一般绘图流程
    准备数据
    构建图像

tensorflow中的激活函数

主要作用:给神经网络加入非线性特性
使用原始代码实现激活函数
    activation_func.py
    
    import numpy as np
    import matplotlib.pyplot as plt
    import tensorflow as tf
    
    # 创建输入数据 np.linspace -7到7的区间,等间隔分布180个点
    x = np.linspace(-7, 7, 180)
    
    # 激活函数的原始实现
    def sigmoid(inputs):
        y = [1 / float(1 + np.exp(-x)) for x in inputs]
        return y
        
    def relu(inputs):
        y = [x * (x > 0) for x in inputs]
        return y
        
    def tanh(inputs):
        y = [(np.exp(x) - np.exp(-x)) / float(np.exp(x) + np.exp(-x)) for x in inputs]
        return y
        
    def softplus(inputs):
        y = [np.log(1 + np.exp(x)) for x in inputs]
        return y
        
    # 经过tensorflow 的激活函数处理的各个 Y 值
    y_sigmoid = tf.nn.sigmoid(x)
    y_relu = tf.nn.relu(x)
    y_tanh = tf.nn.tanh(x)
    y_softplus = tf.nn.softplus(x)
    
    # 创建会话
    sess = tf.Session()
    
    # 运行
    y_sigmoid, y_relu, y_tanh, y_softplus = sess.run([y_sigmoid, y_relu, y_tanh, y_softplus])
    
    # 关闭会话
    sess.close()