首页 > 其他分享 >无涯教程-TensorFlow - 递归神经网络

无涯教程-TensorFlow - 递归神经网络

时间:2023-08-20 10:03:24浏览次数:34  
标签:递归 无涯 batch test 神经网络 input tf TensorFlow

递归神经网络是一种面向深度学习的算法,它遵循顺序方法。在神经网络中,无涯教程始终假定每个输入和输出都独立于所有其他层。这些类型的神经网络称为递归,因为它们以顺序的方式执行数学计算。

表示递归神经网络的示意方法如下所述-

Recurrent Neural Networks

实现递归神经网络

在本节中,将学习如何使用TensorFlow实现递归神经网络。

步骤1   - TensorFlow包含各种库,用于递归神经网络模块的特定实现。

#Import necessary modules
from __future__ import print_function

import tensorflow as tf
from tensorflow.contrib import rnn
from tensorflow.examples.Learnfk.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot = True)

如上所述,这些库有助于定义输入数据,这构成了递归神经网络实现的主要部分。

步骤2   - 主要动机是使用递归神经网络对图像进行分类,其中将每个图像行都视为像素序列, MNIST图像形状专门定义为28 * 28像素。将定义输入参数以完成顺序模式。

n_input = 28 # MNIST data input with img shape 28*28
n_steps = 28
n_hidden = 128
n_classes = 10

# tf Graph input
x = tf.placeholder("float", [None, n_steps, n_input])
y = tf.placeholder("float", [None, n_classes]
weights = {
   'out': tf.Variable(tf.random_normal([n_hidden, n_classes]))
}
biases = {
   'out': tf.Variable(tf.random_normal([n_classes]))
}

步骤3   - 使用RNN中定义的函数计算输出,以获得最佳输出,在此,将每个数据形状与当前输入形状进行比较,并计算输出以保持准确率。

def RNN(x, weights, biases):
   x = tf.unstack(x, n_steps, 1)

   # Define a lstm cell with tensorflow
   lstm_cell = rnn.BasicLSTMCell(n_hidden, forget_bias=1.0)

   # Get lstm cell output
   outputs, states = rnn.static_rnn(lstm_cell, x, dtype = tf.float32)

   # Linear activation, using rnn inner loop last output
   return tf.matmul(outputs[-1], weights['out']) + biases['out']

pred = RNN(x, weights, biases)

# Define loss and optimizer
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits = pred, labels = y))
optimizer = tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(cost)

# Evaluate model
correct_pred = tf.equal(tf.argmax(pred,1), tf.argmax(y,1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))

# Initializing the variables
init = tf.global_variables_initializer()

步骤4   - 在这一步中,无涯教程将启动图形输出,这也有助于计算测试输出的准确性。

with tf.Session() as sess:
   sess.run(init)
   step = 1
   # Keep training until reach max iterations
   
   while step * batch_size < training_iters:
      batch_x, batch_y = mnist.train.next_batch(batch_size)
      batch_x = batch_x.reshape((batch_size, n_steps, n_input))
      sess.run(optimizer, feed_dict={x: batch_x, y: batch_y})
      
      if step % display_step == 0:
         # Calculate batch accuracy
         acc = sess.run(accuracy, feed_dict={x: batch_x, y: batch_y})
         
         # Calculate batch loss
         loss = sess.run(cost, feed_dict={x: batch_x, y: batch_y})
         
         print("Iter " + str(step*batch_size) + ", Minibatch Loss= " +\
            "{:.6f}".format(loss) + ", Training Accuracy= " +\
            "{:.5f}".format(acc))
      step += 1
   print("Optimization Finished!")
      test_len = 128
   test_data = mnist.test.images[:test_len].reshape((-1, n_steps, n_input))
   
   test_label = mnist.test.labels[:test_len]
   print("Testing Accuracy:",\
      sess.run(accuracy, feed_dict={x: test_data, y: test_label}))

下面的屏幕截图显示了生成的输出-

Recurrent Neural Networks Implementation OutputRecurrent Neural Networks Implementation Output TransFlow

参考链接

https://www.learnfk.com/tensorflow/tensorflow-recurrent-neural-networks.html

标签:递归,无涯,batch,test,神经网络,input,tf,TensorFlow
From: https://blog.51cto.com/u_14033984/7157762

相关文章

  • 无涯教程-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,......
  • 无涯教程-Perl - wantarray函数
    描述如果当前正在执行的函数的context正在寻找列表值,则此函数返回true。在标量context中返回false。语法以下是此函数的简单语法-wantarray返回值如果没有context,则此函数返回undef;如果lvalue需要标量,则该函数返回0。例以下是显示其基本用法的示例代码-#!/usr/bin......
  • 无涯教程-Perl - waitpid函数
    描述该函数等待ID为PID的子进程终止,返回已故进程的进程ID。如果PID不存在,则返回-1。进程的退出状态包含在$?中。可以将标志设置为各种值,这些值等于waitpid()UNIX系统调用使用的值。FLAGS的值为0应该在支持进程的所有操作系统上工作。语法以下是此函数的简单语法-waitpi......
  • 无涯教程-Perl - wait函数
    描述该函数等待子进程终止,返回已故进程的进程ID。进程的退出状态包含在$?中。语法以下是此函数的简单语法-wait返回值如果没有子进程,则此函数返回-1,否则将显示已故进程的进程ID参考链接https://www.learnfk.com/perl/perl-wait.html......
  • 无涯教程-Perl - values函数
    描述此函数返回HASH中包含的所有值的列表。在标量context中,返回将返回的值的数量。使用由each和keys函数使用的相同迭代器,因此使用顺序。语法以下是此函数的简单语法-valuesHASH返回值此函数在标量context中返回哈希值中的值数,在列表context中返回值列表。例以下是......
  • 无涯教程-Perl - unshift函数
    描述此函数按顺序将LIST中的元素放在ARRAY的开头。这与shift()相反。语法以下是此函数的简单语法-unshiftARRAY,LIST返回值此函数返回ARRAY中新元素的数量。例以下是显示其基本用法的示例代码-#!/usr/bin/perl-w@array=(1,2,3,4);print"Valueofarray......