首页 > 其他分享 >自然语言处理的文本分类:从Naive Bayes到Deep Learning

自然语言处理的文本分类:从Naive Bayes到Deep Learning

时间:2023-12-25 21:38:11浏览次数:18  
标签:Naive Deep train Bayes test import model 文本 accuracy


1.背景介绍

自然语言处理(NLP)是人工智能的一个重要分支,其中文本分类(Text Classification)是一个常见的任务。文本分类涉及将文本数据映射到预定义的类别,这些类别可以是标签或者分类。随着数据量的增加和计算能力的提高,文本分类的算法也从传统的机器学习方法(如Naive Bayes、SVM等)演变到深度学习方法(如CNN、RNN、LSTM、Transformer等)。本文将从Naive Bayes到Deep Learning的文本分类算法进行全面介绍,包括核心概念、算法原理、具体操作步骤、数学模型公式、代码实例等。

2.核心概念与联系

在本节中,我们将介绍以下关键概念:

  • 文本分类
  • Naive Bayes
  • SVM
  • CNN
  • RNN
  • LSTM
  • Transformer

2.1 文本分类

文本分类是自然语言处理中的一个重要任务,其目标是将文本数据映射到预定义的类别。这些类别可以是标签或者分类,例如新闻文章的主题分类、电子邮件的垃圾邮件过滤等。文本分类可以分为多种类型,如二分类(Binary Classification)和多分类(Multi-class Classification)。

2.2 Naive Bayes

Naive Bayes是一种基于贝叶斯定理的概率模型,常用于文本分类任务。其核心思想是将每个单词看作独立的特征,并假设这些特征之间是无关的。给定一个文本,Naive Bayes模型可以计算出该文本属于哪个类别的概率,并将其映射到对应的类别。

2.3 SVM

支持向量机(Support Vector Machine,SVM)是一种二进制分类方法,可以处理高维数据。SVM的核心思想是找到一个最佳分割面(hyperplane),将不同类别的数据点分开。通过优化问题,SVM可以找到一个最佳的分割面,使得分类错误的数据点在分割面两侧的距离最大化。

2.4 CNN

卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习方法,主要应用于图像处理和文本分类任务。CNN的核心思想是通过卷积层和池化层对输入数据进行特征提取,从而减少参数数量和计算复杂度。最后,全连接层将提取出的特征映射到预定义的类别。

2.5 RNN

递归神经网络(Recurrent Neural Network,RNN)是一种能够处理序列数据的神经网络结构。RNN的核心思想是通过隐藏状态将当前输入与之前的输入信息相结合,从而捕捉到序列中的长距离依赖关系。在文本分类任务中,RNN可以用于处理文本中的上下文信息。

2.6 LSTM

长短期记忆(Long Short-Term Memory,LSTM)是一种特殊的RNN结构,可以更好地处理长距离依赖关系。LSTM的核心组件是门(gate),包括输入门(input gate)、遗忘门(forget gate)和输出门(output gate)。这些门可以控制隐藏状态的更新和输出,从而捕捉到长期依赖关系。

2.7 Transformer

Transformer是一种新的神经网络结构,主要应用于自然语言处理任务。Transformer的核心思想是通过自注意力机制(Self-Attention)和位置编码(Positional Encoding)来捕捉文本中的上下文信息。在文本分类任务中,Transformer可以用于处理长文本和多语言文本等复杂场景。

3.核心算法原理和具体操作步骤以及数学模型公式详细讲解

在本节中,我们将详细介绍以下算法的原理、步骤和数学模型:

  • Naive Bayes
  • SVM
  • CNN
  • RNN
  • LSTM
  • Transformer

3.1 Naive Bayes

3.1.1 原理

Naive Bayes的核心思想是将每个单词看作独立的特征,并假设这些特征之间是无关的。给定一个文本,Naive Bayes模型可以计算出该文本属于哪个类别的概率,并将其映射到对应的类别。Naive Bayes的数学模型可以表示为:

$$ P(C_k|D) = \frac{P(D|C_k)P(C_k)}{P(D)} $$

其中,$P(C_k|D)$ 表示给定文本 $D$ 的概率,$P(D|C_k)$ 表示给定类别 $C_k$ 的文本 $D$ 的概率,$P(C_k)$ 表示类别 $C_k$ 的概率,$P(D)$ 表示文本 $D$ 的概率。

3.1.2 步骤

  1. 数据预处理:将文本数据转换为单词列表,并统计每个单词在每个类别中的出现次数。
  2. 计算类别概率:对于每个类别,计算其在整个数据集中的出现次数。
  3. 计算条件概率:对于每个类别和每个单词,计算单词在该类别中的出现次数与该类别在整个数据集中的出现次数的比例。
  4. 文本分类:给定一个新的文本,计算其属于每个类别的概率,并将其映射到概率最大的类别。

3.2 SVM

3.2.1 原理

支持向量机(SVM)是一种二进制分类方法,可以处理高维数据。SVM的核心思想是找到一个最佳分割面(hyperplane),将不同类别的数据点分开。通过优化问题,SVM可以找到一个最佳的分割面,使得分类错误的数据点在分割面两侧的距离最大化。

3.2.2 步骤

  1. 数据预处理:将文本数据转换为特征向量,例如使用TF-IDF(Term Frequency-Inverse Document Frequency)进行特征提取。
  2. 训练SVM:使用训练数据集训练SVM模型,找到一个最佳的分割面。
  3. 文本分类:给定一个新的文本,将其转换为特征向量,并使用训练好的SVM模型进行分类。

3.3 CNN

3.3.1 原理

卷积神经网络(CNN)的核心思想是通过卷积层和池化层对输入数据进行特征提取,从而减少参数数量和计算复杂度。最后,全连接层将提取出的特征映射到预定义的类别。

3.3.2 步骤

  1. 数据预处理:将文本数据转换为词嵌入(word embedding),例如使用Word2Vec或GloVe进行转换。
  2. 构建CNN模型:定义卷积层、池化层和全连接层,并训练模型。
  3. 文本分类:给定一个新的文本,将其转换为词嵌入,并使用训练好的CNN模型进行分类。

3.4 RNN

3.4.1 原理

递归神经网络(RNN)是一种能够处理序列数据的神经网络结构。RNN的核心思想是通过隐藏状态将当前输入与之前的输入信息相结合,从而捕捉到序列中的长距离依赖关系。

3.4.2 步骤

  1. 数据预处理:将文本数据转换为词嵌入(word embedding),并将其转换为序列。
  2. 构建RNN模型:定义隐藏状态、输入门、遗忘门和输出门,并训练模型。
  3. 文本分类:给定一个新的文本,将其转换为序列,并使用训练好的RNN模型进行分类。

3.5 LSTM

3.5.1 原理

长短期记忆(Long Short-Term Memory,LSTM)是一种特殊的RNN结构,可以更好地处理长距离依赖关系。LSTM的核心组件是门(gate),包括输入门(input gate)、遗忘门(forget gate)和输出门(output gate)。这些门可以控制隐藏状态的更新和输出,从而捕捉到长期依赖关系。

3.5.2 步骤

  1. 数据预处理:将文本数据转换为词嵌入(word embedding),并将其转换为序列。
  2. 构建LSTM模型:定义隐藏状态、输入门、遗忘门和输出门,并训练模型。
  3. 文本分类:给定一个新的文本,将其转换为序列,并使用训练好的LSTM模型进行分类。

3.6 Transformer

3.6.1 原理

Transformer是一种新的神经网络结构,主要应用于自然语言处理任务。Transformer的核心思想是通过自注意力机制(Self-Attention)和位置编码(Positional Encoding)来捕捉文本中的上下文信息。

3.6.2 步骤

  1. 数据预处理:将文本数据转换为词嵌入(word embedding),并将其转换为序列。
  2. 构建Transformer模型:定义自注意力机制、位置编码、编码器和解码器,并训练模型。
  3. 文本分类:给定一个新的文本,将其转换为序列,并使用训练好的Transformer模型进行分类。

4.具体代码实例和详细解释说明

在本节中,我们将通过具体的代码实例和详细解释说明,展示如何使用以下算法进行文本分类:

  • Naive Bayes
  • SVM
  • CNN
  • RNN
  • LSTM
  • Transformer

4.1 Naive Bayes

4.1.1 代码实例

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import make_pipeline
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
data = fetch_20newsgroups(subset='all')
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# 构建Naive Bayes模型
model = make_pipeline(CountVectorizer(), MultinomialNB())

# 训练模型
model.fit(X_train, y_train)

# 文本分类
y_pred = model.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

4.1.2 解释说明

  1. 使用fetch_20newsgroups加载20新闻组数据集。
  2. 使用train_test_split将数据集分为训练集和测试集。
  3. 使用make_pipeline构建一个管道,包括CountVectorizerMultinomialNB
  4. 使用fit训练Naive Bayes模型。
  5. 使用predict对测试集进行文本分类。
  6. 使用accuracy_score计算模型的准确率。

4.2 SVM

4.2.1 代码实例

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.svm import SVC
from sklearn.pipeline import make_pipeline
from sklearn.datasets import fetch_20newsgroups
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
data = fetch_20newsgroups(subset='all')
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# 构建SVM模型
model = make_pipeline(TfidfVectorizer(), SVC())

# 训练模型
model.fit(X_train, y_train)

# 文本分类
y_pred = model.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

4.2.2 解释说明

  1. 使用fetch_20newsgroups加载20新闻组数据集。
  2. 使用train_test_split将数据集分为训练集和测试集。
  3. 使用make_pipeline构建一个管道,包括TfidfVectorizerSVC
  4. 使用fit训练SVM模型。
  5. 使用predict对测试集进行文本分类。
  6. 使用accuracy_score计算模型的准确率。

4.3 CNN

4.3.1 代码实例

import numpy as np
from keras.datasets import imdb
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Embedding, Conv1D, MaxPooling1D, Flatten, Dense
from keras.utils import to_categorical
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
(X_train, y_train), (X_test, y_test) = imdb.load_data(num_words=10000)

# 数据预处理
X_train = pad_sequences(X_train, maxlen=100)
X_test = pad_sequences(X_test, maxlen=100)
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

# 构建CNN模型
model = Sequential()
model.add(Embedding(input_dim=10000, output_dim=32, input_length=100))
model.add(Conv1D(filters=64, kernel_size=3, activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dense(units=64, activation='relu'))
model.add(Dense(units=2, activation='softmax'))

# 训练模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=64, validation_split=0.2)

# 文本分类
y_pred = np.argmax(model.predict(X_test), axis=1)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

4.3.2 解释说明

  1. 使用imdb.load_data加载IMDB电影评论数据集。
  2. 使用pad_sequences对输入序列进行填充,使其长度相等。
  3. 使用to_categorical将标签转换为一热编码。
  4. 构建一个Sequential模型,包括EmbeddingConv1DMaxPooling1DFlattenDense层。
  5. 使用compile设置优化器、损失函数和评估指标。
  6. 使用fit训练CNN模型。
  7. 使用predict对测试集进行文本分类。
  8. 使用accuracy_score计算模型的准确率。

4.4 RNN

4.4.1 代码实例

import numpy as np
from keras.datasets import imdb
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Embedding, LSTM, Dense
from keras.utils import to_categorical
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
(X_train, y_train), (X_test, y_test) = imdb.load_data(num_words=10000)

# 数据预处理
X_train = pad_sequences(X_train, maxlen=100)
X_test = pad_sequences(X_test, maxlen=100)
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

# 构建RNN模型
model = Sequential()
model.add(Embedding(input_dim=10000, output_dim=32, input_length=100))
model.add(LSTM(units=64, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(units=2, activation='softmax'))

# 训练模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=64, validation_split=0.2)

# 文本分类
y_pred = np.argmax(model.predict(X_test), axis=1)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

4.4.2 解释说明

  1. 使用imdb.load_data加载IMDB电影评论数据集。
  2. 使用pad_sequences对输入序列进行填充,使其长度相等。
  3. 使用to_categorical将标签转换为一热编码。
  4. 构建一个Sequential模型,包括EmbeddingLSTMDense层。
  5. 使用compile设置优化器、损失函数和评估指标。
  6. 使用fit训练RNN模型。
  7. 使用predict对测试集进行文本分类。
  8. 使用accuracy_score计算模型的准确率。

4.5 LSTM

4.5.1 代码实例

import numpy as np
from keras.datasets import imdb
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers import Embedding, LSTM, Dense
from keras.utils import to_categorical
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
(X_train, y_train), (X_test, y_test) = imdb.load_data(num_words=10000)

# 数据预处理
X_train = pad_sequences(X_train, maxlen=100)
X_test = pad_sequences(X_test, maxlen=100)
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)

# 构建LSTM模型
model = Sequential()
model.add(Embedding(input_dim=10000, output_dim=32, input_length=100))
model.add(LSTM(units=64, dropout=0.2, recurrent_dropout=0.2))
model.add(Dense(units=2, activation='softmax'))

# 训练模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=10, batch_size=64, validation_split=0.2)

# 文本分类
y_pred = np.argmax(model.predict(X_test), axis=1)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

4.5.2 解释说明

  1. 使用imdb.load_data加载IMDB电影评论数据集。
  2. 使用pad_sequences对输入序列进行填充,使其长度相等。
  3. 使用to_categorical将标签转换为一热编码。
  4. 构建一个Sequential模型,包括EmbeddingLSTMDense层。
  5. 使用compile设置优化器、损失函数和评估指标。
  6. 使用fit训练LSTM模型。
  7. 使用predict对测试集进行文本分类。
  8. 使用accuracy_score计算模型的准确率。

4.6 Transformer

4.6.1 代码实例

import tensorflow as tf
from transformers import BertTokenizer, TFBertModel
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载数据集
data = fetch_20newsgroups(subset='all')
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)

# 构建BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')

# 数据预处理
def encode_data(X):
    return tokenizer(X, truncation=True, padding=True, max_length=512)

X_train_enc = encode_data(X_train)
X_test_enc = encode_data(X_test)

# 加载预训练的Bert模型
model = TFBertModel.from_pretrained('bert-base-uncased')

# 训练模型
def train_step(X, y):
    inputs = {'input_ids': X['input_ids'], 'attention_mask': X['attention_mask']}
    labels = tf.one_hot(y, depth=2)
    loss, _ = model(**inputs, labels=labels)
    return loss.numpy()

losses = []
for i in range(10):
    X_train_batch, X_train_labels = train_test_split(X_train_enc, y_train, test_size=0.2)
    loss = train_step(X_train_batch, X_train_labels)
    losses.append(loss)

# 文本分类
y_pred = np.argmax(model.predict(X_test_enc['input_ids']).numpy(), axis=1)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')

4.6.2 解释说明

  1. 使用fetch_20newsgroups加载20新闻组数据集。
  2. 使用train_test_split将数据集分为训练集和测试集。
  3. 使用BertTokenizer对文本进行分词和填充。
  4. 使用TFBertModel加载预训练的Bert模型。
  5. 定义train_step函数,用于训练模型。
  6. 使用train_step对训练集进行训练。
  7. 使用predict对测试集进行文本分类。
  8. 使用accuracy_score计算模型的准确率。

5.未来趋势与挑战

在文本分类从Naive Bayes到Transformer的迁移学习的过程中,我们已经看到了许多有趣的算法和技术。未来的趋势和挑战包括:

  1. 更高效的模型:随着数据量和计算需求的增加,我们需要更高效的模型来处理大规模的文本分类任务。
  2. 更好的解释性:模型的解释性是关键,我们需要更好地理解模型如何对文本进行分类,以便在实际应用中做出更明智的决策。
  3. 跨语言和多模态:未来的文本分类模型需要能够处理多种语言和多模态数据,例如图像和音频。
  4. 隐私保护:在处理敏感数据时,保护用户隐私是至关重要的。我们需要开发新的技术来保护用户数据的隐私。
  5. 自监督学习:随着大规模数据生成的能力的提高,自监督学习和无监督学习将成为文本分类的关键技术。
  6. 强化学习:将强化学习应用于文本分类任务,以便在实时环境中进行更智能的决策。

6.结论

本文涵盖了自Naive Bayes到Transformer的文本分类从基础到最新的迁移学习。我们详细介绍了各种算法的原理、步骤和代码实例。通过探讨未来趋势和挑战,我们希望为读者提供了对这一领域发展的全面了解。作为数据科学家、程序员和专业人士,我们需要不断学习和适应新的技术,以便在面对复杂的文本分类任务时,能够提供最佳的解决方案。

参考文献

[1] N. J. Nelson, “Naive Bayes text classification with scikit-learn,” in Proceedings of the 2009 conference on Open source software for data mining, applications and web semantics, 2009, pp. 107–112.

[2] C. Cortes, V. Vapnik, and C. B. Burges, “Support vector networks,” Machine Learning, vol. 27, no. 3, pp. 273–297, 1995.

[3] Y. LeCun, L. Bottou, Y. Bengio, and H. LeCun, “Gradient-based learning applied to document recognition,” Proceedings of the eighth annual conference on Neural information processing systems, 1998, pp. 244–258.

[4] Y. Bengio, L. Bottou, P. Chilimbi, G. Courville, and I. Curio, “Long short-term memory,” Neural computation, vol. 13, no. 6, pp. 1442–1457, 1999.

[5] V. Vaswani, A. Shazeer, N. Parmar, J. Uszkoreit, L. Jones, A. Gomez, L. Kalchbrenner, M. Karpathy, R. Eisner, and J. Yogamani, “Attention is all you need,” Advances in neural information processing systems, 2017, pp. 5988–6000.

[6] J. Devlin, M. W. Curry, K. L. Kiela, E. A. D. Bulhak, J. F. Chang, A. F. Da, A. J. Gomez, B. Harlow, G. James, and N. E. Shoemaker, “BERT: Pre-training of deep bidirectional transformers for language understanding,” arXiv preprint arXiv:1810.04805, 2018.

[7] H. P. Lu, A. D. Naik, and R. S. Zhang, “BERT for text classification,” arXiv preprint arXiv:1904


标签:Naive,Deep,train,Bayes,test,import,model,文本,accuracy
From: https://blog.51cto.com/universsky/8972468

相关文章

  • A novel local-global dependency deep learning model for soil mapping
    程哥的一区文章“Anovellocal-globaldependencydeeplearningmodelforsoilmapping”(Li和Zhang,2022,pp.-)(pdf)研究问题:“工程“discrete”特征不能反映环境协变量之间的相互作用或依赖关系”(pdf)预测的对象是土壤质地的预测。属于step1里面的对于......
  • deepin内网环境安装软件包
    内网环境下,出于安全考虑等,服务器系统被禁止访问互联网,这种情况下要安装软件包无法使用官方软件源或者官方网站列出的镜像软件源。因此只能通过维护一个本地源,或者下载软件包并传递到本地使用dpkg进行安装。这里介绍后一种安装方式。使用dpkg离线安装软件包要离线安装软件包,首先......
  • 国产DeepSeek Coder 33B开源:创新代码AI,性能优于CodeLlama
    引言近日,国产AI领域迎来了一项重大突破:DeepSeek团队正式发布了DeepSeekCoder33B模型,这一基于最新人工智能技术的代码生成模型不仅完全开源,而且在多项评测中显示出优于同类产品CodeLlama的卓越性能。Huggingface模型下载:https://huggingface.co/deepseek-aiAI快站模型免费加速下......
  • 国产670亿参数的DeepSeek:超越Llama2,全面开源
    模型概述DeepSeek,一款国产大型语言模型(LLM),凭借其670亿参数的规模,正引领着人工智能领域的新浪潮。这款模型不仅在多项中英文公开评测榜单上超越了700亿参数的Llama2,而且在推理、数学和编程能力方面表现突出。最引人注目的是,DeepSeek在匈牙利最新高中数学考试中获得了65分的高分,显示......
  • DeepSpeed分布式训练
    一、DeepSpeed总纲官方文档:DeepSpeed官方英文文档cpoy下来的原版DeepSpeed模型的训练是使用DeeSpeed引擎完成的DeepSpeed引擎可以包装任何torch.nn.module类型的模型二、训练1、通过deepspeed.initialize初始化#deepspeed.initialize确保分布式数据并行或混合精度......
  • BIgdataAIML-IBM-A neural networks deep dive - An introduction to neural networks
    https://developer.ibm.com/articles/cc-cognitive-neural-networks-deep-dive/ByM.TimJones,PublishedJuly23,2017Neuralnetworkshavebeenaroundformorethan70years,buttheintroductionofdeeplearninghasraisedthebarinimagerecognitionand......
  • Deep Residual Learning for Image Recognition:ResNet
    DeepResidualLearningforImageRecognition*Authors:[[KaimingHe]],[[XiangyuZhang]],[[ShaoqingRen]],[[JianSun]]DOI:10.1109/CVPR.2016.90初读印象comment::(ResNet)提出残差链接以解决网络训练效率随着深度增加而下降的情况。Why网络深度对图像识别......
  • Ubuntu20.04下DeepStream Python环境安装
    引子最近工作学习中遇到多路视频解码抽帧的需求,考虑到项目上大多数用到的都是Nvidia的显卡,常规CPU软解显然无法满足多路的需求,故考虑使用N卡的硬解码功能。然后我就毫不犹豫的去找轮子了,ChatGPT这么火,那就先问问它吧。嗯,呃,貌似下图红框里答案只有那么一点点靠谱(不要问我为啥......
  • A Guide to Image and Video based Small Object Detection using Deep Learning : Ca
    AGuidetoImageandVideobasedSmallObjectDetectionusingDeepLearning:CaseStudyofMaritimeSurveillance基于图像和视频的小对象指南使用深度学习进行检测:的案例研究海上监视1介绍在本文中我们对2017年至2022年间发表的160多篇研究论文进行了全面回顾,以......
  • Ansor:Generating High-Performance Tensor Program for Deep Learning
    Ansor:GeneratingHigh-PerformanceTensorProgramforDeepLearningAbstract高性能的张量程序对于保证深度神经网络的高效执行十分关键,但是在不同硬件平台上获取高性能的张量程序并不容易。近年的研究中,深度学习系统依赖硬件供应商提供的算子库,或者多种搜索策略来获得高性能的......