文档章节

小白学Tensorflow之简单神经网络

AllenOR灵感
 AllenOR灵感
发布于 2017/09/10 01:26
字数 504
阅读 1
收藏 0

在这篇博客中,我们将利用Tensorflow搭建一个简单的三层神经网络,分别是一个输入层,一个隐藏层和一个输出层。并且,我们采用sigmoid函数作为激活函数。
第一,我们先构建神经网络模型,其中w_layer_1是输入层到隐藏层之间的连接矩阵,然后用sigmoid函数来作为激活函数,w_layer_2是隐藏层到输出层之间的连接矩阵。

# 定义输入层到隐藏层之间的连接矩阵
w_layer_1 = init_weights([784, 625])

# 定义隐藏层到输出层之间的连接矩阵
w_layer_2 = init_weights([625, 10])

def model(X, w_layer_1, w_layer_2): 
# 我们采用 sigmoid 函数来作为激活函数
  h = tf.nn.sigmoid(tf.matmul(X, w_layer_1)) 
  return tf.matmul(h, w_layer_2)

第二,我们还是采用softmax和交叉熵来训练我们的模型。

# 训练模型,我们计算交叉熵的平均值和采用梯度下降法来训练
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(py_x, Y))
learning_rate = 0.01
train_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

完整代码,如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import numpy as np
import tensorflow as tf 
import input_data

def init_weights(shape):
    return tf.Variable(tf.random_normal(shape, stddev = 0.01))

def model(X, w_layer_1, w_layer_2):

    # 我们采用 sigmoid 函数来作为激活函数
    h = tf.nn.sigmoid(tf.matmul(X, w_layer_1))
    return tf.matmul(h, w_layer_2)

# 导入数据
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
trX, trY, teX, teY = mnist.train.images, mnist.train.labels, mnist.test.images, mnist.test.labels

X = tf.placeholder("float", [None, 784])
Y = tf.placeholder("float", [None, 10])

# 定义输入层到隐藏层之间的连接矩阵
w_layer_1 = init_weights([784, 625])

# 定义隐藏层到输出层之间的连接矩阵
w_layer_2 = init_weights([625, 10])

# 搭建模型
py_x = model(X, w_layer_1, w_layer_2)

# 训练模型,我们计算交叉熵的平均值和采用梯度下降法来训练
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(py_x, Y))
learning_rate = 0.01
train_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
predict_op = tf.argmax(py_x, 1)

with tf.Session() as sess:

    init = tf.initialize_all_variables()
    sess.run(init)

    for i in xrange(100):
        for start, end in zip(range(0, len(trX), 128), range(128, len(trX), 128)):
            sess.run(train_op, feed_dict = {X: trX[start:end], Y: trY[start:end]})
        print i, np.mean(np.argmax(teY, axis = 1) == sess.run(predict_op, feed_dict = {X: teX, Y: teY}))

本文转载自:http://www.jianshu.com/p/8c3b63f7d999

共有 人打赏支持
AllenOR灵感
粉丝 10
博文 2634
码字总数 82983
作品 0
程序员
史上最全TensorFlow学习资源汇总

来源 悦动智能(公众号ID:aibbtcom) 本篇文章将为大家总结TensorFlow纯干货学习资源,非常适合新手学习,建议大家收藏。 ▌一 、TensorFlow教程资源 1)适合初学者的TensorFlow教程和代码示...

悦动智能
04/12
0
0
【干货】史上最全的Tensorflow学习资源汇总,速藏!

一 、Tensorflow教程资源: 1)适合初学者的Tensorflow教程和代码示例:(https://github.com/aymericdamien/TensorFlow-Examples)该教程不光提供了一些经典的数据集,更是从实现最简单的“Hel...

技术小能手
04/16
0
0
入门 | TensorFlow的动态图工具Eager怎么用?这是一篇极简教程

  选自Github   作者:Madalina Buzau   机器之心编译   参与:王淑婷、泽南      去年 11 月,Google Brain 团队发布了 Eager Execution,一个由运行定义的新接口,为 TensorFl...

机器之心
06/14
0
0
入门 | 关于TensorFlow,你应该了解的9件事

  选自hackernoon   作者:Cassie Kozyrkov   机器之心编译   参与:高璇、路      谷歌开发技术推广工程师 Laurence Moroney 在 Google Cloud Next 大会上进行了一段 42 分钟的...

机器之心
前天
0
0
送书&优惠丨对深度学习感兴趣的你,不了解这些就太OUT了!

点击上方“程序人生”,选择“置顶公众号” 第一时间关注程序猿(媛)身边的故事 TensorFlow是什么? TensorFlow的前身是谷歌大脑(google brain)团队研发的DistBelief。自创建以来,它便被...

csdnsevenn
05/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

docker中安装了RabbitMQ后无法访问其Web管理页面

在官网找了"$ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management"这条安装命令,在docker上安装了RabbitMQ,,结果输入http://localhost:8080并不......

钟然千落
37分钟前
0
0
spring-cloud | 分布式session共享

写在前面的话 各位小伙伴,你们有福了,这一节不仅教大家怎么实现分布式session的问题,还用kotlin开发,喜欢kotlin的小伙伴是不是很开心! 以前在写Android的时候,就对客户端请求有一定的认...

冯文议
56分钟前
0
0
c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
今天
4
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
2
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部