感知器是任何神经网络的单个处理单元。弗兰克·罗森布拉特(Frank Rosenblatt)于1958年首次提出的是一种简单的神经元, 用于将其输入分为一到两类。 Perceptron是线性分类器, 用于监督学习中。它有助于组织给定的输入数据。
感知器是一种神经网络单元, 可以进行精确的计算以检测输入数据中的特征。 Perceptron主要用于将数据分为两部分。因此, 它也被称为线性二进制分类器。
如果其输入0和-1的加权和, Perceptron使用返回+1的步进函数。
激活功能用于在所需值(如(0, 1)或(-1, 1))之间映射输入。
常规的神经网络如下所示:
感知器包括4个部分。
- 输入值或一个输入层:感知器的输入层由人工输入神经元组成, 并将初始数据带入系统中进行进一步处理。
- 权重和偏差:
重量:代表单元之间连接的尺寸或强度。如果从节点1到节点2的权重较大, 则神经元1对神经元的影响更大。
偏差:与线性方程式中添加的截距相同。这是一个附加参数, 其任务是修改输出以及到另一个神经元的输入的加权和。 - 净额:计算总和。
- 激活功能:神经元是否可以激活, 取决于激活功能。激活函数计算加权和, 并进一步加上偏差以得出结果。
标准的神经网络如下图所示。
它是如何工作的?
感知器执行以下简单步骤:
一种。第一步, 将所有输入x乘以它们的权重w。
b。在此步骤中, 将所有增加的值相加, 并称它们为”加权和”。
C。在我们的最后一步中, 将加权和应用于正确的激活函数。
例如:
单位步长激活功能
有两种类型的体系结构。这些类型集中在人工神经网络的功能上, 如下所示:
- 单层感知器
- 多层感知器
单层感知器
单层感知器是第一个神经网络模型, 由Frank Rosenbluth于1958年提出。它是最早的学习模型之一。我们的目标是找到由权重向量w和偏差参数b度量的线性决策函数。
要了解感知器层, 必须理解人工神经网络(ANN)。
人工神经网络(ANN)是一种信息处理系统, 其机制受生物神经电路的功能启发。人工神经网络由多个相互连接的处理单元组成。
这是建立神经模型时的第一个建议。神经元局部记忆的内容包含一个权重向量。
通过计算输入向量的总和乘以向量的相应元素, 可以计算出单个向量的感知器, 每个向量的权重都按权重增加。输出中显示的值是激活功能的输入。
让我们专注于使用TensorFlow解决图像分类问题的单层感知器的实现。绘制单层感知器的最佳示例是通过”逻辑回归”的表示。
现在, 我们必须执行以下必要步骤来训练逻辑回归-
- 在每次训练开始时, 使用随机值初始化权重。
- 对于训练集的每个元素, 将使用期望输出与实际输出之间的差来计算误差。计算出的误差用于调整重量。
- 重复该过程, 直到整个训练集上的故障小于指定的限制, 直到达到最大迭代次数为止。
单层感知器的完整代码
# Import the MINST dataset
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_ ("/tmp/data/", one_hot=True)
import tensorflow as tf
import matplotlib.pyplot as plt
# Parameters
learning_rate = 0.01
training_epochs = 25
batch_size = 100
display_step = 1
# tf Graph Input
x = tf.placeholder("float", [none, 784]) # MNIST data image of shape 28*28 = 784
y = tf.placeholder("float", [none, 10]) # 0-9 digits recognition => 10 classes
# Create model
# Set model weights
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
# Constructing the model
activation=tf.nn.softmaxx(tf.matmul (x, W)+b) # Softmax
of function
# Minimizing error using cross entropy
cross_entropy = y*tf.log(activation)
cost = tf.reduce_mean\ (-tf.reduce_sum\ (cross_entropy, reduction_indice = 1))
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)
#Plot settings
avg_set = []
epoch_set = []
# Initializing the variables where init = tf.initialize_all_variables()
# Launching the graph
with tf.Session() as sess:
sess.run(init)
# Training of the cycle in the dataset
for epoch in range(training_epochs):
avg_cost = 0.
total_batch = int(mnist.train.num_example/batch_size)
# Creating loops at all the batches in the code
for i in range(total_batch):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
# Fitting the training by the batch data sess.run(optimizr, feed_dict = {
x: batch_xs, y: batch_ys})
# Compute all the average of loss avg_cost += sess.run(cost, \ feed_dict = {
x: batch_xs, \ y: batch_ys}) //total batch
# Display the logs at each epoch steps
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 = 'Logistics Regression Training')
plt.ylabel('cost')
plt.xlabel('epoch')
plt.legend()
plt.show()
# Test the model
correct_prediction = tf.equal (tf.argmax (activation, 1), tf.argmax(y, 1))
# Calculating the accuracy of dataset
accuracy = tf.reduce_mean(tf.cast (correct_prediction, "float")) print
("Model accuracy:", accuracy.eval({x:mnist.test.images, y: mnist.test.labels}))
代码的输出:
逻辑回归被认为是预测分析。 Logistic回归主要用于描述数据, 并用于解释因变量和一个或多个名义或自变量之间的关系。
评论前必须登录!
注册