当前位置:   article > 正文

TensorFlow的实战(详细代码)_tensorflow 实战

tensorflow 实战

1 TensorFlow基础

  1.1 TensorFlow概要

  • TensorFlow使用数据流式图规划计算流程,它可以将计算映射到不同的硬件和操作系统平台。

  1.2 TensorFlow编程模型简介

  • TensorFlow中的计算可表示为一个有向图(计算图),其中每个运算操作为一个节点,每个节点可有任意多个输入和输出;
  • 在计算图的边中流动(flow)的数据被称为张量(tensor),tensor在计算图中flow,故命名为TensorFlow;
  • Session是用户使用TensorFlow的交互式接口,可通过Session的Extend方法添加新的节点和边;
  • 反复执行计算图时一般的tensor不会被持续保留,Variable中的数据tensor会被保存。

2 TensorFlow和其他深度学习框架的对比

3 TensorFlow第一步

  3.1 TensorFlow的编译及安装

  3.2 TensorFlow实现Softmax Regression识别手写数字

  • 载入MNIST数据集
    from tensorflow.examples.tutorials.mnist import input_data
    import tensorflow as tf
    mnist = input_data.read_data_sets("Mnist_data/", one_hot=True)
  • 创建placeholder用以输入数据
    x = tf.placeholder(tf.float32, [None, 784])
    y_ = tf.placeholder(tf.float32, [None, 784])
    #None代表不限条数的输入
  • 给模型中的weights和biases创建Variable对象,以存储模型参数(其他的tensor将不保存)
    W = tf.Variable(tf.zeros([784, 10]))
    b = tf.Variable(tf.zeros([10]))
  • 构建计算公式
    y = softmax(Wx + b)
  • 定义Loss,确定优化器
    cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
    train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
  • 初始化变量,执行计算
    tf.global_variables_initializer().run()
    
    for i in range(1000):
        batch_xs, batch_ys = mnist.train.next_batch(100)
        train_step.run({x: batch_xs, y_: batch_ys})

4 TensorFlow实现自编码器及多层感知机

  4.1 自编码器简介

  • 自编码器,即可以使用自身的高阶特征编码自己;
  • 特征的稀疏表达:使用少量的基本特征组合拼装得到更高层抽象的特征;
  • 为防止简单的映射,加入几种限制:1. 让中间隐含层节点数量小于输入、输出节点数量,相当于降维  2. 给输入数据加入噪声

  4.2 TensorFlow实现自编码器

  • 用到xavier参数初始化方法
    def xavier_init(fan_in, fan_out, constant = 1):
        low = - constant * np.sqrt(6.0 / (fan_in + fan_out))
        high = constant * np.sqrt(6.0 / (fan_in + fan_out))
        return tf.random_uniform((fan_in, fan_out),
                                                minval=;ow, maxval=high,
                                                dtype=tf.float32)
  • 参数初始化函数_initial_weights(创建一个名为all_weights的字典dict,将w1、b1、w2、b2全部存入其中)

    复制代码

    def _initialize_weights(self):
        all_weights = dict()
        all_weights['w1'] = tf.Variable(xavier_init(self.n_input, self.n_hidden))
        all_weights['b1'] = tf.Variable(tf.zeros([self.n_hidden], dtype=tf.float32))
        all_weights['w2'] = tf.Variable(xavier_init([self.n_hidden,
                                                     self.n_input], dtype=tf.float32))
        all_weights['b2'] = tf.Variable(tf.zeros([self.n_input],
                                                  dtype=tf.float32))
        return all_weights

    复制代码

  4.3 多层感知机简介

  • Dropout是在训练时将神经网络某一层的输出节点数据随机丢弃一部分(训练时小于1,预测时等于1),这等于创造出了很多新的随机样本,也算是一种bagging
  • Dropout是在训练时将神经网络某一层的输出节点数据随机丢弃一部分(训练时小于1,预测时等于1),这等于创造出了很多新的随机样本,也算是一种bagging

    1. 单侧抑制

    2. 相对宽阔的兴奋边界

    3. 稀疏激活性

  4.4 TensorFlow实现多层感知机

  • ReLU层权重可以用截断正态分布进行初始化,偏置可以用一些小的非零值来初始化以避免dead neuron.Sigmoid层权重偏置则都初始化为0即可
  • 使用ReLU作为隐藏层,并添加dropout,就实现了多层感知机

5 TensorFlow实现卷积神经网络

  5.1 卷积神经网络简介

  • CNN最初是为解决图像识别问题设计,现在也可用于时间序列信号如音频、文本;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/779512
推荐阅读
相关标签
  

闽ICP备14008679号