全连接神经网络(DNN)

基本概念

神经元和感知器模型

神经元是人脑中的神经细胞,用于处理和传递化学和电信号;
感知器就是一种对神经元运行过程的一种抽象结果。
全连接神经网络(DNN)_第1张图片

感知器模型如下: f ( x ) = s i g n ( w ∗ x + b ) f(x)= sign(w*x+b) f(x)=sign(wx+b)其中,x为输入向量,sign为符号函数,括号里面大于等于0,则其值为1,括号里面小于0,则其值为-1。w为权值向量,b为偏置。求感知机模型即求模型参数w和b。感知器预测,即通过学习得到的感知机模型,对于新的输入实例给出其对应的输出类别1或者-1。

单神经元网络与全连接神经网络

单神经元网络也就是只有一个神经元的网络,也是最简单的神经网络。
全连接神经网络是具有多层感知器的的网络,也就是多层神经元的网络。层与层之间需要包括一个非线性激活函数,需要有一个对输入和输出都隐藏的层,还需要保持高度的连通性,由网络的突触权重决定。
模型训练的常用方法是反向传播(BP)算法。可以根据输出层的调整量来推导网络的突触权重的调整方式,将误差进行反向传播。

全连接神经网络(DNN)_第2张图片

测试代码

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# 图片分类
# 获取数据集
fashion_mnist = tf.keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
# 构建模型
model = tf.keras.Sequential([
	# 对于每一个输入的28*28的image二维数组,降低为一维数组
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    # 相当于有128个神经元的隐藏层,产生shape=(-1, 128)的数组
    tf.keras.layers.Dense(128, activation='relu'),
    # 输出层,产生shape=(-1, 10)的数组
    tf.keras.layers.Dense(10)
])
# 编译模型
model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
# 模型训练
model.fit(train_images, train_labels, epochs=10)
# 评估模型
test_loss, test_acc = model.evaluate(test_images,  test_labels, verbose=2)
# 模型预测
predict_labels = model.predict(test_images)
# 结果显示
plt.figure(1, (10, 10))
for i in range(15):
    plt.subplot(5, 6, i + 1)
    plt.imshow(test_images[i])
    plt.xticks([])
    plt.yticks([])
    plt.xlabel(class_names[np.argmax(predict_labels[i])])
plt.show()

测试结果

全连接神经网络(DNN)_第3张图片

全连接神经网络(DNN)_第4张图片

你可能感兴趣的:(深度学习(基础),python)