CNN实战之如何分析影评-好看又有趣的讲解

2023-05-16

CNN实战之如何分析影评-好看又有趣的讲解

  • 前言
  • 认识影评数据集
  • 了解TextCNN模型
  • 获取影评数据
  • 生成文本数据集
  • 生成TextCNN模型
  • 评估模型

前言

话说老王买了两张电影票打算请女神小丽去看电影,老王希望看完电影趁着热度可以和小丽的关系更进一步。于是老王买了两张最近大火的《剩女日记》,看完电影,效果喜人,老王差点又做了单身狗。。。
在这里插入图片描述

认识影评数据集

为了杜绝这种乌龙事件的再度发生,老王决定通过大数据分析的手段对上映的电影进行一个预筛分,精准挑选优质电影。

通常而言,总会有一些人通过某些特殊手段提前了解到上映电影的剧情,然后很热情的写下观影报告,这些所谓的观影报告即影评。如果能将每个人的评价划分为电影值得看和电影不值得看,那么无疑对观众在选择是否观影可以提供很好的参考,尽管一千个人会看到一千个哈姆雷特,但是当数据量足够大时,基本上是可以代表一大部分人的真实体验的。

当电影评价被归纳为‘消极’和‘积极’两种分类时,问题就转变为了二分类问题,这是一个重要的且非常基础的机器学习问题。这种问题的处理过程如下图所示:
在这里插入图片描述

了解TextCNN模型

在这里插入图片描述

在这里插入图片描述

获取影评数据

首先还是老生常谈的问题,对环境变量进行配置,代码如下:

from __future__ import absolute_import, division,
print_function, unicode_literals        #该行要放在第一行位置                                                     

import warnings                                                            

#忽略系统警告提示                                                         

warnings.filterwarnings('ignore')                                                

import tensorflow as tf                                                       
from tensorflow import keras                                                  
import numpy as np                                                         

print(tf.__version__)                                                          

以上是对环境的基本配置,其中包括基本变量的引入,该段代码应置于首行,否则会出现报错提醒。配置完毕基本运行环境后,开始下载数据集,关于电影评论的数据集IMDB,在tensorflow的打包文件中都有包含。该数据集经过预处理,评论(单词序列)已经被转换为整数序列,其中每个整数表示字典中的特定单词。具体代码如下:

imdb = keras.datasets.imdb                                                    

(train_data, train_labels), (test_data, test_labels) =
imdb.load_data(num_words=10000)      

上述代码中参数num_words=10000表示保留了训练数据中最常出现的 10,000 个单词,为了保持数据规模的可管理性,防止数据量无限变大,低频词汇将被丢弃。

生成文本数据集

在生成文本数据之前,首先要了解上文提到的整数序列的含义。上文提到过,下载的数据集都是经过预处理,也就是说每个样本都是一个表示影评中词汇的整数数组。每个标签都是一个值为0或1的整数值,其中0代表消极评论,1代表积极评论。这相当于对影评中每个单词对应一个数字,通过机器学习的方法,找到每个数字在积极评价或者消极评价中对应的权重,如图所示:
在这里插入图片描述
如图所示,影评中每个单词对应一个数字,其中相同的单词对应相同的数字。以上面两条评价为例,‘电影还不错’对应积极评价,‘电影很一般’对应消极评价,则得到下式:
在这里插入图片描述

在这里插入图片描述

"<START>
this film was just brilliant casting location scenery story direction
everyone's really suited the part they played and you could just imagine being
there robert <UNK> is an amazing actor and now the same being director
<UNK> father came from the same scottish island as myself so i loved the
fact there was a real connection with this film the witty remarks throughout
the film were great it was just brilliant so much that i bought the film as
soon as it was released for <UNK> and would recommend it to everyone to
watch and the fly fishing was amazing really cried at the end it was so sad and
you know what they say if you cry at a film it must have been good and this
definitely was also <UNK> to the two little boy's that played the
<UNK> of norman and paul they were just brilliant children are often left
out of the <UNK> list i think because the stars that play them all grown
up are such a big profile for the whole film but these children are amazing and
should be praised for what they have done don't you think the whole story was
so lovely because it was true and was someone's life after all that was shared
with us all" 

现在把它显示为数组形式,对应代码如下:

print(train_data[0])  

结果显示如下:

[1,14, 22, 16, 43, 530, 973, 1622, 1385, 65, 458, 4468, 66, 3941, 4, 173, 36, 256,
5, 25, 100, 43, 838, 112, 50, 670, 2, 9, 35, 480, 284, 5, 150, 4, 172, 112,
167, 2, 336, 385, 39, 4, 172, 4536, 1111, 17, 546, 38, 13, 447, 4, 192, 50, 16,
6, 147, 2025, 19, 14, 22, 4, 1920, 4613, 469, 4, 22, 71, 87, 12, 16, 43, 530,
38, 76, 15, 13, 1247, 4, 22, 17, 515, 17, 12, 16, 626, 18, 2, 5, 62, 386, 12,
8, 316, 8, 106, 5, 4, 2223, 5244, 16, 480, 66, 3785, 33, 4, 130, 12, 16, 38,
619, 5, 25, 124, 51, 36, 135, 48, 25, 1415, 33, 6, 22, 12, 215, 28, 77, 52, 5,
14, 407, 16, 82, 2, 8, 4, 107, 117, 5952, 15, 256, 4, 2, 7, 3766, 5, 723, 36,
71, 43, 530, 476, 26, 400, 317, 46, 7, 4, 2, 1029, 13, 104, 88, 4, 381, 15,
297, 98, 32, 2071, 56, 26, 141, 6, 194, 7486, 18, 4, 226, 22, 21, 134, 476, 26,
480, 5, 144, 30, 5535, 18, 51, 36, 28, 224, 92, 25, 104, 4, 226, 65, 16, 38,
1334, 88, 12, 16, 283, 5, 16, 4472, 113, 103, 32, 15, 16, 5345, 19, 178, 32]       

这里有一点要注意的是,转换的数组中每一个数字代表的是影视评价的一个单词,而非一个字母,这一点务必要搞清楚。

前面说过,在进行影评分析时,录入的数据都是预处理过的信息,那么如果想知道这些信息原来代表的评价的真实意思,该如何操作?这里给大家演示一个辅助函数,帮助大家查询一个整数数列到字符串之间通过映射关系所对应的对象信息:

#一个映射单词到整数索引的词典                                                  

word_index
= imdb.get_word_index()#建立词典索引                                

#保留第一个索引                                                            

word_index
= {k:(v+3) for k,v in word_index.items()}                                   

word_index["<PAD>"]
= 0#这里0代表<PAD>                                         

word_index["<START>"]
= 1#这里1代表<START>                                   

word_index["<UNK>"]
= 2#这里2代表<UNK>(unknown)                             

word_index["<UNUSED>"]
= 3#这里3代表<UNUSED>                              

reverse_word_index
= dict([(value, key) for (key, value) in word_index.items()])                     

def
decode_review(text):                                                       

    return ' '.join([reverse_word_index.get(i,
 '?') for i in text])                                                

首先建立一个索引,然后将key和value依次填入索引内部,标注特殊符号,之后就可以将原评价显示出来。

len(train_data[0]),
len(train_data[1])                                              

通过上述代码可以显示影评第一行和第二行的相关信息,很显然,不同的影评,内容和文字数量都很难相同:

 (218,189)      

这显然是不符合神经网络的输入要求的:由于神经网络的输入必须是张量形式,因此影评需要首先转换为张量,然后才可以进行学习,转换的方式有两种:

(1) 将数组转换为表示单词出现与否的由0和1组成的向量,类似于
one-hot 编码。例如,序列[3, 5]将转换为一个10,000维的向量,该向量除了索引为3和5的位置是1以外,其他都为
0。然后,将其作为网络的首层——一个可以处理浮点型向量数据的稠密层。显然,这种方法需要占用计算机大量的内存,需要一个大小为 num_words * num_reviews
的矩阵。

(2)可以通过填充数组的手段来保证输入数据具有相同的长度,然后创建一个大小为 max_length * num_reviews 的整型张量。可以使用能够处理此形状数据的嵌入层作为网络中的第一层。在本示例中将使用pad_sequences 函数来使长度标准化:

#训练数据长度设置为256                                                        

train_data =
keras.preprocessing.sequence.pad_sequences(train_data,                        

value=word_index["<PAD>"] ,
padding='post' , maxlen=256)                          

#测试数据长度设置为256                                                     

test_data =
keras.preprocessing.sequence.pad_sequences(test_data,                        

value=word_index["<PAD>"]
, padding='post' , maxlen=256)     

通过上面的标准化操作,再次来查看样本的长度:

len(train_data[0]),
len(train_data[1])                                              

(256, 256)         

对数据进行填充后,首条评论的张量形式如下所示:
在这里插入图片描述

如图所示,其中相同的数字代表相同单词,例如‘14’代表影评中的‘this’。

生成TextCNN模型

了解了影评数据的下载及原始数据预处理后,下一步就是对模型进行搭建,神经网络由堆叠的层来构建,这需要从两个主要方面来进行体系结构决策:模型里有多少层?每个层里有多少隐层单元(hidden units)?在此样本中,输入数据包含一个单词索引的数组。要预测的标签为0或1。在本案例中,首先为该问题构建一个模型,这里利用keras.Sequential进行层的序列化添加,具体代码如下:

# 输入形状是用于电影评论的词汇数目(10,000 词)                               

vocab_size = 10000                                                             


model = keras.sequential()#搭建层                                                   

model.add(keras.layers.Embedding(vocab_size,
16))#embedding 是一个将单词向量化的函#数,嵌入(embeddings)输出的形状都是:(num_examples,
embedding_dimension)         

model.add(keras.layers.GloabAveragePooling1D())#添加全局平均池化层                 

model.add(keras.layers.Dense(16, activation = 'relu'))
                            

model.add(keras.layers.Dense(1, activation =
'sigmoid'))           

                   


model.summary()                                                                        


Model: "sequential"                                                           

_________________________________________________________________             

Layer (type)              Output Shape                   Param   #                    

=================================================================  

embedding (Embedding)     (None, None, 16)                160000                 

_________________________________________________________________             

global_average_pooling1d (Gl (None, 16)                0                            

_________________________________________________________________             

dense (Dense)              (None, 16)                       272                        

_________________________________________________________________                

dense_1 (Dense)            (None, 1)                         17                      

=================================================================  

Total params: 160,289                                                            

Trainable params: 160,289                                                        


Non-trainable params: 0    

层按顺序堆叠以构建分类器:

第一层是嵌入(Embedding)层。该层采用整数编码的词汇表,并查找每个词索引的嵌入向量(embedding vector)。这些向量是通过模型训练学习到的。向量向输出数组增加了一个维度。得到的维度为:(batch, sequence,
embedding)。embedding是一个将单词向量化的函数,嵌入(embeddings)输出的形状都是:(num_examples,
embedding_dimension)

接下来,GlobalAveragePooling1D
将通过对序列维度求平均值来为每个样本返回一个定长输出向量。这允许模型以尽可能最简单的方式处理变长输入。

该定长输出向量通过一个有
16 个隐层单元的全连接(Dense)层传输。

最后一层与单个输出结点密集连接。使用 Sigmoid 激活函数,其函数值为介于 0 与
1 之间的浮点数,表示概率或置信度。

接下来需要对模型进行编译,编译的目的前文提过,此处不表,代码如下:

model.compile(optimize = 'adam',                                                    
loss = 'binary_crossentropy',                                            

          metrics = ['accuracy'])     

评估模型

本文将模型评估分为三个步骤:验证模型、训练模型、评估模型。

   验证模型代码如下:



x_val = train_data[:10000]#取训练数据集前10000个进行训练和验证                  

partial_x_train = train_data[10000:]                                               

y_val = train_labels[:10000]#同理取前10000个标签                                

partial_y_train =
train_labels[10000:] 

训练模型代码如下:

#以 512 个样本的 mini-batch 大小迭代 40 个 epoch 来训练模型。这是指对 x_train 

#和 y_train 张量中所有样本的的 40 次迭代。在训练过程中,监测来自验证集的 #10,000 个样本上的损失值(loss)       和准确率(accuracy):                         

history = model.fit(partial_x_train,                                               


               
partial_y_train,                                              

               
epochs=40,                                                


               
batch_size=512,                                                

               
validation_data=(x_val, y_val),                                    

                verbose=1)      

训练过程如下所示:

Train on 15000 samples, validate on 10000 samples                                     

Epoch 1/40                                                                    


15000/15000 [==============================] - 1s 88us/sample -
loss: 0.6924 - accuracy: 0.6045 - val_loss: 0.6910 - val_accuracy: 0.6819                                  

Epoch 2/40                                                                   


15000/15000 [==============================] - 0s 22us/sample -
loss: 0.6885 - accuracy: 0.6392 - val_loss: 0.6856 - val_accuracy: 0.7129                            

Epoch 3/40                                                                    


15000/15000 [==============================] - 0s 22us/sample -
loss: 0.6798 - accuracy: 0.7371 - val_loss: 0.6747 - val_accuracy: 0.7141                                 

……                                                                       


Epoch 38/40                                                                     


15000/15000 [==============================] - 0s 24us/sample -
loss: 0.1036 - accuracy:   0.9715 -
val_loss: 0.3067 - val_accuracy: 0.8807                            

Epoch 39/40                                                                     


15000/15000 [==============================] - 0s 24us/sample -
loss: 0.0996 - accuracy: 0.9724 - val_loss: 0.3068 - val_accuracy: 0.8830                               

Epoch 40/40                                                                   


15000/15000
[==============================] - 0s 24us/sample - loss: 0.0956 - accuracy:
0.9749 - val_loss: 0.3109 - val_accuracy: 0.8823     

来看一下模型的性能如何。将返回两个值。损失值(loss)(一个表示误差的数字,值越低越好)与准确率(accuracy)。

模型评估代码如下:

results = model.evaluate(test_data, 
test_labels, verbose=2)                               

print(results)                                                                 




25000/1 - 2s - loss: 0.3454 - accuracy: 0.8732                                        

[0.32927662477493286,    0.8732]      

这种十分朴素的方法得到了约 87% 的准确率(accuracy)。若采用更好的方法,模型的准确率应当接近 95%。

老王掌握了判断电影优劣的方法后,兴冲冲的再一次约了女神小丽去看电影,结果果然不一样了
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CNN实战之如何分析影评-好看又有趣的讲解 的相关文章

  • 基于Matlab的Robotics Toolbox工具箱的机器人仿真函数介绍(空间位姿表示与动力学)

    文章目录 前言一 空间位姿描述1 二维空间2 三维空间3 旋转的不同表示方法1 xff09 欧拉角2 xff09 RPY角3 xff09 双向量表示4 xff09 轴与旋转角5 xff09 四元数表示 二 动力学1 动力学参数2 正动力学函
  • 平面2R机器人的运动学/动力学建模实例

    文章目录 前言平面2R机器人1 问题假设2 建立运动学模型1 xff09 DH参数法2 xff09 指数积方法3 xff09 雅可比矩阵 xff08 微分变换法 xff09 4 xff09 逆运动学求解 xff08 几何法 xff09 3
  • 2023最新jmeter接口测试入门到精通实战讲解,手把手教学

    一 线程组 线程组元件是任何一个测试计划的开始点 在一个测试计划中的所有元件都必须在某个线程组下 所有的任务都是基于线程组 xff1a 通俗理解 xff1a 线程组 xff1a 就是一个线程组 xff0c 里面有若干个请求 xff1b 线程
  • 2023最新全方面了解接口自动化,看完还不会你锤我

    一 自动化分类 现在流行的是金字塔状的分层测试 xff0c 将测试从上到下分为UI测试层 接口测试层 单元测试层三层 在传统的UI自动化的基础之上更多实施基于代码的低级别自动化测试 xff0c 而不仅仅通过用户界面进行端到端的测试 按照测试
  • pytest接口自动化测试框架搭建

    fixture 特点 xff1a 命令灵活 xff1a 对于setup xff0c teardown可以省略 数据共享 xff1a 在conftest py配置里写方法可以实现数据共享 xff0c 不需要import导入 xff0c 可以跨
  • App自动化测试怎么做?实战分享App自动化测试全流程

    一 什么是app测试 xff1f 什么是app自动化测试 xff1f 概念 xff1a 所谓app测试也称之为移动测试 xff0c 通俗易懂的理解就是测试我们平时手机使用的程序 那什么是app自动化测试呢 xff1f 通常情况下是随app产
  • 究极版-计算机四级错题集【操作系统单选题】

    计算机四级究极版错题集 1 解析 按照资源管理的观点 xff0c 操作系统的功能主要可以分为进程线程管理 xff08 处理器管理 xff09 存储管理 文件管理 作业管理和设备管理 2 若用户编程需要打印输出 xff0c 需要系统调用wri
  • 【干货分享】2023美团软件测试面试题汇总

    前言 本篇分享的软件测试面试题内容主要包括 xff1a 测试总体 需求分析 测试计划 测试策略 测试用例 缺陷报告 测试总结报告 白盒测试 单元测试 集成测试 系统测试 验收测试等等26个模块 https www bilibili com
  • 三面百度软件测试岗,都被问到自闭

    1 HR已读不回问题分析以及如何解决 哔哩哔哩 bilibili 1 HR已读不回问题分析以及如何解决是2023最新软件测试面试大全看完offer拿到手软的第1集视频 xff0c 该合集共计21集 xff0c 视频收藏或关注UP主 xff0
  • 抖音软件测试三面,21个面试题复盘

    2023最新软件测试面试大全看完offer拿到手软 哔哩哔哩 bilibili 2023最新软件测试面试大全看完offer拿到手软共计21条视频 xff0c 包括 xff1a 1 HR已读不回问题分析以及如何解决 2 HR已读不回之针对性进
  • 大环境不好难找工作?三面阿里,幸好做足了准备,已拿offer

    这边推荐你去看一下这套专门讲解面试和简历的视频 xff0c 主打面试题 xff0c 接口 web app全套视频面试题 xff0c 还有配套的笔记 xff01 这个视频可以说是B站百万播放全网第一的面试教程 xff0c 同时在线人数到达10
  • 接口自动化测试面试题大全(合适各级软件测试人员)

    这边推荐你去看一下这套专门讲解面试和简历的视频 xff0c 主打面试题 xff0c 接口 web app全套视频面试题 xff0c 还有配套的笔记 xff01 这个视频可以说是B站百万播放全网第一的面试教程 xff0c 同时在线人数到达10
  • 阿里90道常问面试题(软件测试岗位)

    这边推荐你去看一下这套专门讲解面试和简历的视频 xff0c 主打面试题 xff0c 接口 web app全套视频面试题 xff0c 还有配套的笔记 xff01 这个视频可以说是B站百万播放全网第一的面试教程 xff0c 同时在线人数到达10
  • curl 发送json格式数据 请求

    curl H 34 Content Type application json 34 X POST data 39 34 userID 34 10001 39 http localhost 8085 GetUserInfo
  • 在keil中使用头文件实现多文件编程

    如上图所示 xff0c 在这里 xff0c MAX7219driver c为将被包含的源文件 xff0c max7219 h为对应MAX7219driver c的头文件 xff0c 而 xff08 驱动测试 xff09 显示PZ 12234
  • PHP中使用CURL之php curl详细解析和常见大坑

    这篇文章主要介绍了PHP中使用CURL之php curl详细解析和常见大坑 xff0c 现在分享给大家 xff0c 也给大家做个参考 一起跟随小编过来看看吧 七夕啦 xff0c 作为开发 xff0c 妹子没得撩就 撩 下服务器吧 xff0c
  • KMP字符串

    给定一个字符串 S xff0c 以及一个模式串 P xff0c 所有字符串中只包含大小写英文字母以及阿拉伯数字 模式串 P 在字符串 S 中多次作为子串出现 求出模式串P在字符串S中所有出现的位置的起始下标 输入格式 第一行输入整数 N x
  • 一个简单实用的分离器件锂电池充电电路

    下面推荐一个由分离器件搭建的锂电池充电电路 xff0c 如下图 简单说明一下各器件的功能及电路原理 xff1a 简单说明一下各器件的功能及电路原理 F 43 为充电器的正极 xff0c BT 43 为电池正极 xff0c CH与单片机的一个
  • Android自定义节点进度条NodeProgressBar

    NodeProgressBar 一 简介 Android日常开发中我们可能会遇到开发一个带节点的进度条的需求 xff0c 这个需求看似简单 xff0c 实际上可以挖掘出不少东西 做的好的话也可以做成相对通用的自定义组件 二 自定义属性 sp
  • Http工具类 HttpUtils

    import java io IOException import java nio charset Charset import java security KeyManagementException import java secur

随机推荐

  • 【STM32基础】第二篇、STM32串口的使用

    目录 第一部分 如何取出串口接收到的数据 xff1f 第二部分 如何将串口接收的数据与目标数据进行匹配 xff1f 第三部分 串口常用的发送数据的函数 1 发送一个字符 xff08 8位 xff09 2 发送一个16位数据 xff08 16
  • 使用FlyMCU往STM32中烧写程序

    0 软硬件环境 1 操作系统 xff1a Windows 2 软件 xff1a KeilFlyMcu 3 硬件 xff1a PCSTM32最小系统开发板USB转TTL CH340G 1 生成hex文件 编写好要烧写的程序后 xff0c 点击
  • LVI-SAM安装与测试

    1 介绍 就在昨天 xff0c LVI SAM开源了 xff0c 它是一个lidar visual inertial里程计和建图系统 xff0c 在系统级别结合了LIO SAM和Vins Mono的优势 作者之前还开源了LeGO LOAM和
  • 在Ubuntu 18.04上安装Apollo 6.0

    文章目录 1 前期准备1 1 安装Ubuntu1 2 安装NVIDIA GPU驱动1 3 安装Docker Engine1 4 安装NVIDIA Container Toolkit 2 下载Apollo源文件3 启动Docker容器4 进入
  • R2LIVE安装与测试

    文章目录 1 R2LIVE2 安装依赖2 1 Ubuntu和ROS2 2 Ceres Solver2 3 livox ros driver 3 编译R2LIVE4 运行示例 1 R2LIVE R2LIVE 是一个强大的 实时的 紧密耦合的多
  • 图像标注工具labelme在WIndows系统上的安装和使用

    1 前言 labelme可对图像进行标注 xff0c 包括多边形 xff0c 矩形 xff0c 线 xff0c 点和图像级标注 它是用Python编写的 xff0c 并使用Qt作为其图形界面 详细内容见 xff1a https github
  • Windows环境使用和编译CMake记录

    以下为两种使用方式 xff0c 第一种较为简单 xff0c 第二种需提前安装vs软件 1 二进制方式安装 下载win平台的安装包 xff0c 安装解压后将bin目录添加到环境变量即可 打开命令窗口 xff0c 查看当前版本 百度云下载链接
  • 激光雷达和相机的联合标定(Camera-LiDAR Calibration)之Autoware

    1 前言 单一传感器不可避免的存在局限性 xff0c 为了提高系统的稳健性 xff0c 多采取多传感器融合的方案 xff0c 融合又包含不同传感器的时间同步和空间同步 这里要讲的激光雷达和相机的联合标定就属于空间同步范畴 另外 xff0c
  • 如何使用Keras fit和fit_generator(动手教程)

    写在前面 被Adrian Rosebrock圈粉后 xff0c 就一直期待他的更新 xff0c 作者每周一更新 xff0c 考虑到时差问题 xff08 作者在美国 xff09 xff0c 一般北京时间周二才能看到 作者根据读者留言中的问题写
  • CMake 的常用命令

    目录 0 CMake常用的命令或函数 xff1a 1 定义项目 project 2 多个目录 add subdirectory 3 常用命令 add executable add library 4 常用命令 改变最终目标文件输出位置 5
  • Libcurl的编译_HTTP/HTTPS客户端源码示例

    HTTP HTTPS客户端源码示例 环境 zlib 1 2 8 openssl 1 0 1g curl 7 36 Author Kagula LastUpdateDate 2016 05 09 阅读前提 xff1a CMake工具的基本使用
  • CNN卷积神经网络原理详解(上)

    CNN卷积神经网络原理详解 xff08 上 xff09 前言卷积神经网络的生物背景我们要让计算机做什么 xff1f 卷积网络第一层全连接层训练 前言 卷积网络 xff08 convolutional network 也叫作卷积神经网络 xf
  • 啥也不会照样看懂交叉熵损失函数

    啥也不会照样看懂交叉熵损失函数 什么是损失函数损失函数的作用有哪些损失函数交叉熵 xff08 Cross Entroy 损失函数 什么是损失函数 损失函数 loss function 是用来估量模型的预测值与真实值的不一致程度 xff0c
  • 可变形卷积从概念到实现过程

    可变形卷积从概念到实现过程 什么是可变形卷积 xff1f 为什么要可变形卷积 xff1f 可变形卷积结构形式 xff1f 可变形卷积的学习过程 xff1f 可变形卷积如何实现 xff1f 上期回顾 卷积神经网络进阶用法 残差网络如何解决梯度
  • 导航定位系统的原理解析(一个小白写给另一个小白)

    导航定位系统的原理解析 xff08 写给小白 xff09 前言 三星 定位基本原理 xff08 导航定位的原理 xff09 传输误差后记 前言 无人驾驶是这几年大火的一个研究方向 xff0c 研究无人驾驶需要了解的知识非常多 xff0c 但
  • 一张图详细说明自动驾驶车辆如何搭建硬件系统

    一张图详细说明自动驾驶车辆如何搭建硬件系统 文章结构说明第一部分 xff08 1 xff09 一图展示自动驾驶硬件系统的总体架构 xff08 2 xff09 庖丁解牛说内容1 线控模块2传感器模块 第二部分 xff08 1 xff09 传感
  • Tensorflow安装教程详解(图文详解,深度好文)

    Tensorflow安装教程详解 xff08 图文详解 xff0c 深度好文 xff09 前言安装前的准备工作关于python关于Anaconda 开始使用Tensorflow系统内配置Anaconda使用路径Anaconda Naviga
  • 二级指针 *(unsigned char**)(buf+0) = (unsigned char*)(buf+1)

    RTT里面的代码 1 rt err t rt mp init struct rt mempool mp 2 const char name 3 void start 4 rt size t size 5 rt size t block si
  • 子类以private方式继承父类

    子类以private方式继承父类 xff0c 则父类的pubic protected接口在子类变为private接口 xff0c 而父类的private接口在子类变为不可访问的接口 xff0c 而且不存在子类到父类的转换 所以子类以priv
  • CNN实战之如何分析影评-好看又有趣的讲解

    CNN实战之如何分析影评 好看又有趣的讲解 前言认识影评数据集了解TextCNN模型获取影评数据生成文本数据集生成TextCNN模型评估模型 前言 话说老王买了两张电影票打算请女神小丽去看电影 xff0c 老王希望看完电影趁着热度可以和小丽