01_数据结构与神经网络回顾

01_数据结构与神经网络回顾

文章目录

; 常见数据结构

在TensorFlow中,其实无论是标量还是n阶向量我们都可以理解为张量。在以前机器学习案例中我们处理矩阵数据都是二阶向量。而现在的深度学习我们一般处理数据类型为3阶(文本序列),4阶(图像),5阶(视频)。接下来用简单的代码对如上内容进行简单回顾

标量(有大小无方向)

import numpy as np

x = np.array(5)
print('x的值:',x)
print('x的阶:',x.ndim)
print('x的类型:',x.dtype)
print('x的形状:',x.shape)

输出结果如下:

x的值: [1 2 3 4 5]
x的阶: 1
x的类型: int32
x的形状: (5,)

向量 (1阶张量)

在机器学习项目中,通常 y (真实值) 就是一阶数据

import numpy as np

y = np.array([1,2,3,4,5])
print('y的值:',y)
print('y的阶:',y.ndim)
print('y的类型:',y.dtype)
print('y的形状:',y.shape)

输出结构如下

x的值: [1 2 3 4 5]
x的阶: 1
x的类型: int32
x的形状: (5,)

矩阵 (2阶张量)

绝大部分机器学习的结构性数据都是2阶张量数据 (样本数 + 特征数)

import numpy as np

x = np.arange(12).reshape(3,4)
print('x的值:\n',x)
print('x的阶:',x.ndim)
print('x的类型:',x.dtype)
print('x的形状:',x.shape)

输出结构如下

x的值:
 [[ 0  1  2  3]
 [ 4  5  6  7]
 [ 8  9 10 11]]
x的阶: 2
x的类型: int32
x的形状: (3, 4)

序列数据 (3阶张量)

RNN循环神经网络主要用于处理文字序列,一般来说数据集的形状为3D张量 (评论数 + 句子 + 词编码),本质上涉及到句子的分词操作。如果大家对机器学习文本分类感兴趣也可以学习下jieba分词与贝叶斯相关课程

from tensorflow.keras.preprocessing.text import Tokenizer

words = ['LaoWang has a Wechat account.','He is not a nice person.','Be careful.']
tokenizer = Tokenizer(num_words=15)
tokenizer.fit_on_texts(words)
sequences = tokenizer.texts_to_sequences(words)
one_hot_matrix = tokenizer.texts_to_matrix(words,mode='binary')
word_index = tokenizer.word_index
print('这三句话(单词)的one-hot编码:\n',one_hot_matrix)

输出结构如下

这三句话(单词)的one-hot编码:
[[0. 1. 1. 1. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0. 0. 1. 1. 1. 1. 1. 0. 0. 0. 0.]
 [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0. 0.]]

图像数据 (4阶张量)

图像本身包含高度、宽度、在加上颜色深度通道,对应卷积核的深度。 (样本数,宽,高,通道数),也有可能为:(样本数,宽,高,RGB颜色值)。之前讲解DNN深度学习时之所以为3阶张量是因为图像是灰度图

import tensorflow as tf

cifar10 = tf.keras.datasets.cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
print(x_train.shape,y_train.shape)
print(x_test.shape,y_test.shape)

输出结构如下

(50000, 32, 32, 3) (50000, 1)
(10000, 32, 32, 3) (10000, 1)

视频数据 (5阶张量)

机器学习初学者很少有机会见到比4D更高阶的张量。而视频数据结构就是其中一种。视频本质可以看作一帧一帧的彩色图片组成的数据集 (样本数,帧数,宽,高,通道数)

import cv2

cap = nba = cv2.VideoCapture("../data/video.mp4")
print(cap)

flag, frame = cap.read()
print(flag, frame.shape)

print('视频的帧数', cap.get(propId=cv2.CAP_PROP_FPS))
print('视频的图片总数', cap.get(propId=cv2.CAP_PROP_FRAME_COUNT))
print('视频的图片宽', cap.get(propId=cv2.CAP_PROP_FRAME_WIDTH))
print('视频的图片高', cap.get(propId=cv2.CAP_PROP_FRAME_HEIGHT))

输出结构如下

<VideoCapture 000002212B834F10>
True (544, 960, 3)
视频的帧数 29.731527619143247
视频的图片总数 3948.0
视频的图片宽 960.0
视频的图片高 544.0

各种神经网络对比

感知器

感知器就是神经元它是构成神经网络的基本单位。感知器由 (x,w,b、input function、activation function) 组成

y’ = x1w1 + x2w2 + … + xnwn + w0

01_数据结构与神经网络回顾

; 深度神经网络

有多少个特征则会有多少个输入神经元,有多少个类别则会有多少个输出神经元 (sigmoid, softmax)

01_数据结构与神经网络回顾

卷积神经网络

卷积核个数是每层所拥有的卷积核的数量,而卷积核的深度是每个卷积核的channel通道数量,它与目标图片的channel通道数相同

01_数据结构与神经网络回顾
卷积神经网络下层的特征数目只受上层接收的特征数目的影响,而不是与深度神经网络的完全连接。
[En]

The number of features in the lower layer of the convolution neural network is only affected by the number of features received in the upper layer, rather than the full connection to the depth neural network.

01_数据结构与神经网络回顾
合用功能使用位置的相邻输出的总体统计特征来替换该位置处的网络输出。它本质上是下采样,可以大大减少网络中的参数数量。
[En]

The pooling function uses the overall statistical characteristics of the adjacent outputs of a location to replace the output of the network at that location. It is essentially downsampling, which can greatly reduce the number of parameters in the network.

01_数据结构与神经网络回顾

; 循环神经网络

无论是前面的深度神经网络还是卷积神经网络,无论是从左到右或者从右到左,神经网络得到的结果使完全相同的,预测值与操作特征的次序无关,文本分析与图片不同,它是时序数据,一个字/词如果不结合上下文来一起解释,其意思大相径庭了。而循环神经网络主要是用来处理时序数据,一种带有”记忆” 功能的神经网络。我们在阅读文章时的记忆可以分为瞬时记忆、短期记忆(RNN),长期记忆(LSTM)

  1. RNN (瞬时记忆):明天我离开南京去北京
  2. LSTM (长期记忆): 苹果 … 乔布斯

01_数据结构与神经网络回顾
时间轴上的节点遍历完毕后,循环就结束了。循环神经网络向下一层的网络输出X’。通过上面的图可以发现,X’受近期的状态影响最大。大家会发现RNN相对DNN或者CNN来说结构还是很不相同的,它主要是处理时序数据因此有个时间序列的概念。下一篇我们来研究下文本是如何转化成向量的。

01_数据结构与神经网络回顾

Original: https://blog.csdn.net/lsqzedu/article/details/122556855
Author: lsqzedu
Title: 01_数据结构与神经网络回顾

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/511638/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球