内容总结与莫烦的视频。

这里多层感知器代码写的是一个简单的三层神经网络,输入层,隐藏层,输出层。代码的目的是你和一个二次曲线。同时,为了保证数据的自然,添加了mean为0,steddv为0.05的噪声。

添加层代码:

def addLayer(inputs,inSize,outSize,activ_func = None):#insize outsize表示输如输出层的大小,inputs是输入。activ_func是激活函数,输出层没有激活函数。默认激活函数为空
with tf.name_scope(name = "layer"):
with tf.name_scope("weigths"):
Weights = tf.Variable(tf.random_normal([inSize,outSize]),name = "W")
bias = tf.Variable(tf.zeros([1,outSize]),name = "bias")
W_plus_b = tf.matmul(inputs,Weights)+bias
if activ_func == None:
return W_plus_b
else:
return activ_func(W_plus_b)

输入:

 with tf.name_scope(name = "inputs"):#with这个主要是用来在tensorboard上显示用。
xs = tf.placeholder(tf.float32,[None,1],name = "x_input")#不是-1哦
ys = tf.placeholder(tf.float32,[None,1],name = "y_input")
l1 = addLayer(xs,1,10,activ_func= tf.nn.relu)
y_pre = addLayer(l1,10,1,activ_func=None)

其他部分:

需要注意的是

 with tf.name_scope("loss"):
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-y_pre),
reduction_indices=[1]))#这里reduction_indices=[1]类似于numpy中的那种用法,是指横向还是竖向,reduce_sum函数貌似主要是用于矩阵的,向量可以不使用
with tf.name_scope("train"):
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
#在以后的版本中,这里的initialize_all_variable()可能被逐步抛弃使用global_variable_init(大概是这么写的)那个函数。欢迎指正。
init = tf.initialize_all_variables()#init这一步很重要,在训练前一定要是使用sess.run(init)操作(只要是你用到了Variable)
writer = tf.summary.FileWriter("logs/",sess.graph)
with tf.Session() as sess: sess.run(init) for i in range(1000):
sess.run(train_step,feed_dict = {xs:x_data,ys:y_data})
if i % 50 == 0:
print(sess.run(loss,feed_dict = {xs:x_data,ys:y_data}))#只要是你的操作中有涉及到placeholder一定要记得使用feed_dict

所有代码:

 # -*- coding: utf-8 -*-
"""
Created on Tue Jun 13 15:41:23 2017 @author: Jarvis
""" import tensorflow as tf
import numpy as np def addLayer(inputs,inSize,outSize,activ_func = None):
with tf.name_scope(name = "layer"):
with tf.name_scope("weigths"):
Weights = tf.Variable(tf.random_normal([inSize,outSize]),name = "W")
bias = tf.Variable(tf.zeros([1,outSize]),name = "bias")
W_plus_b = tf.matmul(inputs,Weights)+bias
if activ_func == None:
return W_plus_b
else:
return activ_func(W_plus_b)
x_data = np.linspace(-1,1,300)[:,np.newaxis]
noise = np.random.normal(0,0.05,x_data.shape)
y_data = np.square(x_data)-0.5+noise with tf.name_scope(name = "inputs"):
xs = tf.placeholder(tf.float32,[None,1],name = "x_input")#不是-1哦
ys = tf.placeholder(tf.float32,[None,1],name = "y_input")
l1 = addLayer(xs,1,10,activ_func= tf.nn.relu)
y_pre = addLayer(l1,10,1,activ_func=None)
with tf.name_scope("loss"):
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-y_pre),
reduction_indices=[1]))
with tf.name_scope("train"):
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) init = tf.initialize_all_variables()
writer = tf.summary.FileWriter("logs/",sess.graph)
with tf.Session() as sess: sess.run(init) for i in range(1000):
sess.run(train_step,feed_dict = {xs:x_data,ys:y_data})
if i % 50 == 0:
print(sess.run(loss,feed_dict = {xs:x_data,ys:y_data}))

TFboy养成记 多层感知器 MLP的更多相关文章

  1. 4.2tensorflow多层感知器MLP识别手写数字最易懂实例代码

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html 1.1  多层感知器MLP(m ...

  2. "多层感知器"--MLP神经网络算法

    提到人工智能(Artificial Intelligence,AI),大家都不会陌生,在现今行业领起风潮,各行各业无不趋之若鹜,作为技术使用者,到底什么是AI,我们要有自己的理解. 目前,在人工智能中 ...

  3. keras—多层感知器MLP—MNIST手写数字识别

    一.手写数字识别 现在就来说说如何使用神经网络实现手写数字识别. 在这里我使用mind manager工具绘制了要实现手写数字识别需要的模块以及模块的功能:  其中隐含层节点数量(即神经细胞数量)计算 ...

  4. keras—多层感知器MLP—IMDb情感分析

    import urllib.request import os import tarfile from keras.datasets import imdb from keras.preprocess ...

  5. MLPclassifier,MLP 多层感知器的的缩写(Multi-layer Perceptron)

    先看代码(sklearn的示例代码): from sklearn.neural_network import MLPClassifier X = [[0., 0.], [1., 1.]] y = [0 ...

  6. 神经网络与机器学习 笔记—多层感知器(MLP)

    多层感知器(MLP) Rosenblatt感知器和LMS算法,都是单层的并且是单个神经元构造的神经网络,他们的局限性是只能解决线性可分问题,例如Rosenblatt感知器一直没办法处理简单异或问题.然 ...

  7. tensorflow学习笔记——自编码器及多层感知器

    1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...

  8. Spark Multilayer perceptron classifier (MLPC)多层感知器分类器

    多层感知器分类器(MLPC)是基于前馈人工神经网络(ANN)的分类器. MLPC由多个节点层组成. 每个层完全连接到网络中的下一层. 输入层中的节点表示输入数据. 所有其他节点,通过输入与节点的权重w ...

  9. TensorFlow—多层感知器—MNIST手写数字识别

    1 import tensorflow as tf import tensorflow.examples.tutorials.mnist.input_data as input_data import ...

随机推荐

  1. Ubuntu软件中心卡在正在应用更改的解决办法

    http://forum.ubuntu.org.cn/viewtopic.php?t=374037 http://forum.ubuntu.org.cn/viewtopic.php?p=2743994 ...

  2. session多服务器共享的方案

    session的存储了解以前是怎么做的,搞清楚了来龙去脉,才会明白进行共享背后的思想和出发点.我喜欢按照这样的方式来问(或者去搞清楚):为什么要session要进行共享,不共享会什么问题呢? php中 ...

  3. vue-cli中如何引入jquery

    前言 虽然vue不推荐直接操作DOM,而且也提供了操作DOM的方式.但是在某些时候还是要用到jquery(囧),那么如何在使用vue-cli的时候引入jquery呢? 安装 国内镜像 cnpm 安装 ...

  4. phalcon——HTTP 请求

    (一般在控制器方法中使用) 获取值: (1)直接获取值: $customerName = $this->request->getPost("name"); (2)自动添 ...

  5. LeetCode 543. Diameter of Binary Tree (二叉树的直径)

    Given a binary tree, you need to compute the length of the diameter of the tree. The diameter of a b ...

  6. 2017上海QCon之旅总结(中)

    本来这个公众号的交流消息中间件相关的技术的.上周去上海参加了QCon,第一次参加这样的技术会议,感受挺多的,所以整理一下自己的一些想法接公众号和大家交流一下. 三天的内容还挺多的,原计划分上下两篇总结 ...

  7. java自动化-juint框架简述

    本人使用的是java的juint框架来组织的自动化测试,故我这边需要简单介绍一下juint框架 首先,建议自行百度一下juint框架,先有一个大概的了解 所谓的接口自动化测试,会对多个接口中每一个接口 ...

  8. C# into子句

    可使用 into 上下文关键字创建临时标识符,将 group.join 或 select 子句的结果存储至新标识符. 此标识符本身可以是附加查询命令的生成器. 有时称在 group 或 select  ...

  9. strict 严格模式

    严格模式可以让你更早的发现错误,因为那些容易让程序出错的地方会被找出来   打开严格模式:"use strict" 不支持的javascript引擎会忽略它,当作是一个未赋值字符串 ...

  10. 开发环境MAPLAB下使用仿真器ICD2程序下载流程

    程序下载流程 一.    连接示意图 二.    下载步骤 1.目标板电源断开 2.将仿真器下载端口与电路板JTAG端口有效连接 3.启动MPLAB软件 4.点击MAPLAB软件上方Programme ...