内容总结与莫烦的视频。

这里多层感知器代码写的是一个简单的三层神经网络,输入层,隐藏层,输出层。代码的目的是你和一个二次曲线。同时,为了保证数据的自然,添加了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. 将JavaScript转化为C#

    因为一个需求,不得不将JavaScript转化为C#. 其实有强大的 Node.js. 说说代码, 其实可以使用dynamic 来实现.但是dynamic有很多问题. 直接上代码吧,不是很难,就是很啰 ...

  2. Angular4 后台管理系统搭建(10) - 做一个通用的可跨域上传文件的组件

    写的很慢,不知不觉这是第十篇了.但是我其他事情太多,只能抽空写下.现在angular4或angular2流行的上传方式是ng2-file-upload.它的功能很强大.但是我没有配置成可以跨域上传的. ...

  3. C#同步方法转异步

    public async Task DelayAsync() { await Task.Run(()=>Delay()); } private void Delay() { } 本作品采用知识共 ...

  4. ST40 自制 JTAG 适配器

    // 文章首发于 https://zhuanlan.zhihu.com/p/28762429 // 但是不知道为什么搜索引擎还没有收录,便在博客再次发布. 0. 引言 意法半导体生产的 SH4 架构的 ...

  5. canvas图表详解系列(5):雷达(面积)图

    雷达(面积)图 本章建议学习时间4小时 学习方式:详细阅读,并手动实现相关代码(如果没有canvas基础,需要先学习前面的canvas基础笔记) 学习目标:此教程将教会大家如何使用canvas绘制各种 ...

  6. Taffy自动化测试框架简介

    Taffy Taffy是基于nosetests的自动化测试框架. Taffy主要用来测试后台服务(包括且不限于Http, Dubbo/hessian, Webservice, Socket等类型接口) ...

  7. LeetCode 674. Longest Continuous Increasing Subsequence (最长连续递增序列)

    Given an unsorted array of integers, find the length of longest continuous increasing subsequence. E ...

  8. 【Jquery系列】详解Jquery对象和Dom对象

    问题描述 本篇文章主要讲解Jquery对象和DOM对象,主要围绕如下五个方面来介绍: Jquery对象和dom对象定义 Jquery对象与dom对象区别 Jquery对象及运用举例 dom对象及运用举 ...

  9. 关于EsayUI中datagrid重复提交后台查询数据的问题

    直接上代码: <table id="XXXX" style="width:100%;height:100%;" class="easyui-da ...

  10. JavaScript+HTML5 实现打地鼠小游戏

    一.游戏简介 打地鼠这个游戏相信大家都不陌生,也是童年时候一款经典的游戏.本次游戏的编写是以html文件形式完成的,并且使用HBulider软件进行编写,使用谷歌浏览器展示效果,游戏将会采用JavaS ...