首页 > 其他分享 >无涯教程-TensorFlow - 多层感知器学习

无涯教程-TensorFlow - 多层感知器学习

时间:2023-08-20 14:33:58浏览次数:38  
标签:layer 感知器 无涯 batch epoch cost output tf TensorFlow

多层感知器定义了人工神经网络最复杂的体系结构,多层感知器学习的示意图如下所示-

Multi Layer Perceptron

MLP网络通常用于监督学习格式,用于MLP网络的典型学习算法也称为反向传播算法。

现在,无涯教程将重点介绍针对图像分类问题的MLP实现。

# 导入 MINST 数据
from tensorflow.examples.Learnfk.mnist import input_data 
mnist=input_data.read_data_sets("/tmp/data/", one_hot=True) 

import tensorflow as tf 
import matplotlib.pyplot as plt 

# 参数
learning_rate=0.001 
training_epochs=20 
batch_size=100 
display_step=1 

# 网络参数
n_hidden_1=256 

# 第一层 num 特征
n_hidden_2=256 # 第二层 num 特征
n_input=784 # MNIST 数据输入 (img shape: 28*28) n_classes=10
#MNIST 总类(0-9 位)

# tf 图形输入
x=tf.placeholder("float", [None, n_input]) 
y=tf.placeholder("float", [None, n_classes]) 

#权重第 1 层
h=tf.Variable(tf.random_normal([n_input, n_hidden_1])) # bias layer 1 
bias_layer_1=tf.Variable(tf.random_normal([n_hidden_1])) 
# layer 1 layer_1=tf.nn.sigmoid(tf.add(tf.matmul(x, h), bias_layer_1)) 

# 权重第 2 层
w=tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])) 

# 偏置层 2
bias_layer_2=tf.Variable(tf.random_normal([n_hidden_2])) 

# layer 2 
layer_2=tf.nn.sigmoid(tf.add(tf.matmul(layer_1, w), bias_layer_2)) 

# 权重输出层
output=tf.Variable(tf.random_normal([n_hidden_2, n_classes])) 

# biar output layer 
bias_output=tf.Variable(tf.random_normal([n_classes])) # output layer 
output_layer=tf.matmul(layer_2, output) + bias_output

# cost function 
cost=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(
   logits=output_layer, labels=y)) 

#cost=tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(output_layer, y)) 
# optimizer 
optimizer=tf.train.AdamOptimizer(learning_rate=learning_rate).minimize(cost) 

# optimizer=tf.train.GradientDescentOptimizer(
   learning_rate=learning_rate).minimize(cost) 

# Plot settings 
avg_set=[] 
epoch_set=[] 

# 初始化变量
init=tf.global_variables_initializer() 

# 启动图表
with tf.Session() as sess: 
   sess.run(init) 
   
   # 训练周期
   for epoch in range(training_epochs): 
      avg_cost=0. 
      total_batch=int(mnist.train.num_examples/batch_size) 
      
      # 循环遍历所有批次
      for i in range(total_batch): 
         batch_xs, batch_ys=mnist.train.next_batch(batch_size) 
         # 使用批量数据进行拟合训练 sess.run(optimizer, feed_dict={
            x: batch_xs, y: batch_ys}) 
         # Compute average loss 
         avg_cost += sess.run(cost, feed_dict={x: batch_xs, y: batch_ys})/total_batch
      # 显示每个纪元步骤的日志
      if epoch % display_step == 0: 
         print 
         Epoch:", '%04d' % (epoch + 1), "cost=", "{:.9f}".format(avg_cost)
      avg_set.append(avg_cost) 
      epoch_set.append(epoch + 1)
   print 
   "Training phase finished" 
   
   plt.plot(epoch_set, avg_set, 'o', label='MLP Training phase') 
   plt.ylabel('cost') 
   plt.xlabel('epoch') 
   plt.legend() 
   plt.show() 
   
   # Test model 
   correct_prediction=tf.equal(tf.argmax(output_layer, 1), tf.argmax(y, 1)) 
   
   # Calculate accuracy 
   accuracy=tf.reduce_mean(tf.cast(correct_prediction, "float")) 
   print 
   "Model Accuracy:", accuracy.eval({x: mnist.test.images, y: mnist.test.labels})

上面的代码行生成以下输出-

Implementation with MLP

参考链接

https://www.learnfk.com/tensorflow/tensorflow-multi-layer-perceptron-learning.html

标签:layer,感知器,无涯,batch,epoch,cost,output,tf,TensorFlow
From: https://blog.51cto.com/u_14033984/7161462

相关文章

  • 无涯教程-TensorFlow - 导出模块
    在这里,无涯教程将重点介绍TensorFlow中的MetaGraph形成,这将帮助了解TensorFlow中的导出模块,MetaGraph包含基本信息,这是训练,执行判断或对先前训练过的图进行推理所必需的。defexport_meta_graph(filename=None,collection_list=None,as_text=False):"""thiscodewrites......
  • 无涯教程-TensorFlow - 单词嵌入
    Wordembedding是从离散对象(如单词)映射到向量和实数的概念,可将离散的输入对象有效地转换为有用的向量。Wordembedding的输入如下所示:blue:(0.01359,0.00075997,0.24608,...,-0.2524,1.0048,0.06259)blues:(0.01396,0.11887,-0.48963,...,0.033483,-0.10007,......
  • 无涯教程-TensorFlow - Keras
    Keras易于学习的高级Python库,可在TensorFlow框架上运行,它的重点是理解深度学习技术,如为神经网络创建层,以维护形状和数学细节的概念。框架的创建可以分为以下两种类型-顺序API功能API无涯教程将使用JupyterNotebook执行和显示输出,如下所示-步骤1  - 首先执行数据加载和......
  • 无涯教程-TensorFlow - TensorBoard可视化
    TensorFlow包含一个可视化工具,称为TensorBoard,它用于分析数据流图,还用于了解机器学习模型。TensorBoard的重要功能包括查看有关垂直对齐的任何图形的参数和详细信息的不同类型统计的视图。深度神经网络包括多达36,000个节点。TensorBoard帮助将这些节点折叠成块并突出显示相同......
  • 无涯教程-TensorFlow - 递归神经网络
    递归神经网络是一种面向深度学习的算法,它遵循顺序方法。在神经网络中,无涯教程始终假定每个输入和输出都独立于所有其他层。这些类型的神经网络称为递归,因为它们以顺序的方式执行数学计算。表示递归神经网络的示意方法如下所述-实现递归神经网络在本节中,将学习如何使用TensorFl......
  • 无涯教程-TensorFlow - 卷积神经网络
    了解机器学习概念之后,无涯教程现在可以将重点转移到深度学习概念上,深度学习是机器学习的一个分支,被认为是近几十年来研究人员迈出的关键一步。深度学习实现的示例包括图像识别和语音识别等应用。以下是深度神经网络的两种重要类型-卷积神经网络递归神经网络在本章中,将重点介......
  • 无涯教程-TensorFlow - 数学基础
    在TensorFlow中创建基本应用程序之前,了解TensorFlow所需的数学概念非常重要,数学被视为任何机器学习算法的核心,借助于数学的核心概念,定义了针对特定机器学习算法的解决方案。向量(Vector)将连续或离散的数字数组定义为向量,机器学习算法处理固定长度的向量,以产生更好的输出。机......
  • 无涯教程-TensorFlow - 安装步骤
    要安装TensorFlow,在系统中安装"Python"非常重要。从TensorFlow安装开始,Python3.4+被认为是最好的选择。考虑以下步骤在Windows操作系统中安装TensorFlow。第1步 - 确认正在安装的python版本。第2步 - 用户可以选择任何机制在系统中安装TensorFlow。无涯教程建议使用......
  • 无涯教程-TensorFlow - 简介
    TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google相册和搜索,其中许多产品曾使用过其前任软件DistBelief。TensorFlow最初由谷歌大脑团队开发,用于Google的研究和生产,于2015年11月9日......
  • 无涯教程-Perl - write函数
    描述该函数将格式指定的格式化记录写入FILEHANDLE。如果省略FILEHANDLE,则将输出写入当前选定的默认输出通道。表单处理是自动处理的,按照文件句柄的格式指定,添加新的页面,页眉,页脚等。语法以下是此函数的简单语法-writeFILEHANDLEwrite返回值如果失败,此函数返回0,......