Python机器学习、深度学习库总结(内含大量示例,建议收藏)

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

*
前言
python常用机器学习及深度学习库介绍
总结与分类

+ python 常用机器学习及深度学习库总结
+ 分类
更多

前言

目前,随着人工智能的大热,吸引了诸多行业对于人工智能的关注,同时也迎来了一波又一波的人工智能学习的热潮,虽然人工智能背后的原理并不能通过短短一文给予详细介绍,但是像所有学科一样,我们并不需要从头开始”造轮子”,可以通过使用丰富的人工智能框架来快速构建人工智能模型,从而入门人工智能的潮流。
人工智能指的是一系列使机器能够像人类一样处理信息的技术;机器学习是利用计算机编程从历史数据中学习,对新数据进行预测的过程;神经网络是基于生物大脑结构和特征的机器学习的计算机模型;深度学习是机器学习的一个子集,它处理大量的非结构化数据,如人类的语音、文本和图像。因此,这些概念在层次上是相互依存的,人工智能是最广泛的术语,而深度学习是最具体的:

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

为了大家能够对人工智能常用的 Python 库有一个初步的了解,以选择能够满足自己需求的库进行学习,对目前较为常见的人工智能库进行简要全面的介绍。

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

; python常用机器学习及深度学习库介绍

1、 Numpy

NumPy(Numerical Python)Python的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库, Numpy底层使用 C语言编写,数组中直接存储对象,而不是存储对象指针,所以其运算效率远高于 纯Python代码。
我们可以在示例中对比下 纯Python与使用 Numpy库在计算列表sin值的速度对比:

import numpy as np
import math
import random
import time

start = time.time()
for i in range(10):
    list_1 = list(range(1,10000))
    for j in range(len(list_1)):
        list_1[j] = math.sin(list_1[j])
print("使用纯Python用时{}s".format(time.time()-start))

start = time.time()
for i in range(10):
    list_1 = np.array(np.arange(1,10000))
    list_1 = np.sin(list_1)
print("使用Numpy用时{}s".format(time.time()-start))

从如下运行结果,可以看到使用 Numpy 库的速度快于纯 Python 编写的代码:

使用纯Python用时0.017444372177124023s
使用Numpy用时0.001619577407836914s

2、 OpenCV

OpenCV 是一个的跨平台计算机视觉库,可以运行在 Linux、Windows 和 Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时也提供了 Python 接口,实现了图像处理和计算机视觉方面的很多通用算法。
下面代码尝试使用一些简单的滤镜,包括图片的平滑处理、高斯模糊等:

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('h89817032p0.png')
kernel = np.ones((5,5),np.float32)/25
dst = cv.filter2D(img,-1,kernel)
blur_1 = cv.GaussianBlur(img,(5,5),0)
blur_2 = cv.bilateralFilter(img,9,75,75)
plt.figure(figsize=(10,10))
plt.subplot(221),plt.imshow(img[:,:,::-1]),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(222),plt.imshow(dst[:,:,::-1]),plt.title('Averaging')
plt.xticks([]), plt.yticks([])
plt.subplot(223),plt.imshow(blur_1[:,:,::-1]),plt.title('Gaussian')
plt.xticks([]), plt.yticks([])
plt.subplot(224),plt.imshow(blur_1[:,:,::-1]),plt.title('Bilateral')
plt.xticks([]), plt.yticks([])
plt.show()

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

可以参考OpenCV图像处理基础(变换和去噪),了解更多 OpenCV 图像处理操作。

3、 Scikit-image

scikit-image是基于 scipy的图像处理库,它将图片作为 numpy数组进行处理。
例如,可以利用 scikit-image改变图片比例, scikit-image提供了 rescaleresize以及 downscale_local_mean等函数。

from skimage import data, color, io
from skimage.transform import rescale, resize, downscale_local_mean

image = color.rgb2gray(io.imread('h89817032p0.png'))

image_rescaled = rescale(image, 0.25, anti_aliasing=False)
image_resized = resize(image, (image.shape[0] // 4, image.shape[1] // 4),
                       anti_aliasing=True)
image_downscaled = downscale_local_mean(image, (4, 3))
plt.figure(figsize=(20,20))
plt.subplot(221),plt.imshow(image, cmap='gray'),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(222),plt.imshow(image_rescaled, cmap='gray'),plt.title('Rescaled')
plt.xticks([]), plt.yticks([])
plt.subplot(223),plt.imshow(image_resized, cmap='gray'),plt.title('Resized')
plt.xticks([]), plt.yticks([])
plt.subplot(224),plt.imshow(image_downscaled, cmap='gray'),plt.title('Downscaled')
plt.xticks([]), plt.yticks([])
plt.show()

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

4、 Python Imaging Library(PIL)

Python Imaging Library(PIL) 已经成为 Python 事实上的图像处理标准库了,这是由于, PIL 功能非常强大,但API却非常简单易用。
但是由于PIL仅支持到 Python 2.7,再加上年久失修,于是一群志愿者在 PIL 的基础上创建了兼容的版本,名字叫 Pillow,支持最新 Python 3.x,又加入了许多新特性,因此,我们可以跳过 PIL,直接安装使用 Pillow

5、 Pillow

使用 Pillow 生成字母验证码图片:

from PIL import Image, ImageDraw, ImageFont, ImageFilter

import random

def rndChar():
    return chr(random.randint(65, 90))

def rndColor():
    return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

def rndColor2():
    return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127))

width = 60 * 6
height = 60 * 6
image = Image.new('RGB', (width, height), (255, 255, 255))

font = ImageFont.truetype('/usr/share/fonts/wps-office/simhei.ttf', 60)

draw = ImageDraw.Draw(image)

for x in range(width):
    for y in range(height):
        draw.point((x, y), fill=rndColor())

for t in range(6):
    draw.text((60 * t + 10, 150), rndChar(), font=font, fill=rndColor2())

image = image.filter(ImageFilter.BLUR)
image.save('code.jpg', 'jpeg')

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

6、 SimpleCV

SimpleCV 是一个用于构建计算机视觉应用程序的开源框架。使用它,可以访问高性能的计算机视觉库,如 OpenCV,而不必首先了解位深度、文件格式、颜色空间、缓冲区管理、特征值或矩阵等术语。但其对于 Python3 的支持很差很差,在 Python3.7 中使用如下代码:

from SimpleCV import Image, Color, Display

img = Image('http://i.imgur.com/lfAeZ4n.png')

feats = img.findKeypoints()

feats.draw(color=Color.RED)

img.show()

output = img.applyLayers()

output.save('juniperfeats.png')

会报如下错误,因此不建议在 Python3 中使用:

SyntaxError: Missing parentheses in call to 'print'. Did you mean print('unit test')?

7、 Mahotas

Mahotas 是一个快速计算机视觉算法库,其构建在 Numpy 之上,目前拥有超过100种图像处理和计算机视觉功能,并在不断增长。
使用 Mahotas 加载图像,并对像素进行操作:

import numpy as np
import mahotas
import mahotas.demos

from mahotas.thresholding import soft_threshold
from matplotlib import pyplot as plt
from os import path
f = mahotas.demos.load('lena', as_grey=True)
f = f[128:,128:]
plt.gray()

print("Fraction of zeros in original image: {0}".format(np.mean(f==0)))
plt.imshow(f)
plt.show()

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

8、 Ilastik

Ilastik 能够给用户提供良好的基于机器学习的生物信息图像分析服务,利用机器学习算法,轻松地分割,分类,跟踪和计数细胞或其他实验数据。大多数操作都是交互式的,并不需要机器学习专业知识。可以参考https://www.ilastik.org/documentation/basics/installation.html进行安装使用。

9、 Scikit-learn

Scikit-learn 是针对 Python 编程语言的免费软件机器学习库。它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度提升,k均值和 DBSCAN 等多种机器学习算法。
使用 Scikit-learn实现 KMeans算法:

import time

import numpy as np
import matplotlib.pyplot as plt

from sklearn.cluster import MiniBatchKMeans, KMeans
from sklearn.metrics.pairwise import pairwise_distances_argmin
from sklearn.datasets import make_blobs

np.random.seed(0)

batch_size = 45
centers = [[1, 1], [-1, -1], [1, -1]]
n_clusters = len(centers)
X, labels_true = make_blobs(n_samples=3000, centers=centers, cluster_std=0.7)

k_means = KMeans(init='k-means++', n_clusters=3, n_init=10)
t0 = time.time()
k_means.fit(X)
t_batch = time.time() - t0

mbk = MiniBatchKMeans(init='k-means++', n_clusters=3, batch_size=batch_size,
                      n_init=10, max_no_improvement=10, verbose=0)
t0 = time.time()
mbk.fit(X)
t_mini_batch = time.time() - t0

fig = plt.figure(figsize=(8, 3))
fig.subplots_adjust(left=0.02, right=0.98, bottom=0.05, top=0.9)
colors = ['#4EACC5', '#FF9C34', '#4E9A06']

k_means_cluster_centers = k_means.cluster_centers_
order = pairwise_distances_argmin(k_means.cluster_centers_,
                                  mbk.cluster_centers_)
mbk_means_cluster_centers = mbk.cluster_centers_[order]

k_means_labels = pairwise_distances_argmin(X, k_means_cluster_centers)
mbk_means_labels = pairwise_distances_argmin(X, mbk_means_cluster_centers)

for k, col in zip(range(n_clusters), colors):
    my_members = k_means_labels == k
    cluster_center = k_means_cluster_centers[k]
    plt.plot(X[my_members, 0], X[my_members, 1], 'w',
            markerfacecolor=col, marker='.')
    plt.plot(cluster_center[0], cluster_center[1], 'o', markerfacecolor=col,
            markeredgecolor='k', markersize=6)
plt.title('KMeans')
plt.xticks(())
plt.yticks(())

plt.show()

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

10、 SciPy

SciPy 库提供了许多用户友好和高效的数值计算,如数值积分、插值、优化、线性代数等。
SciPy 库定义了许多数学物理的特殊函数,包括椭圆函数、贝塞尔函数、伽马函数、贝塔函数、超几何函数、抛物线圆柱函数等等。

from scipy import special
import matplotlib.pyplot as plt
import numpy as np

def drumhead_height(n, k, distance, angle, t):
    kth_zero = special.jn_zeros(n, k)[-1]
    return np.cos(t) * np.cos(n*angle) * special.jn(n, distance*kth_zero)

theta = np.r_[0:2*np.pi:50j]
radius = np.r_[0:1:50j]
x = np.array([r * np.cos(theta) for r in radius])
y = np.array([r * np.sin(theta) for r in radius])
z = np.array([drumhead_height(1, 1, r, theta, 0.5) for r in radius])

fig = plt.figure()
ax = fig.add_axes(rect=(0, 0.05, 0.95, 0.95), projection='3d')
ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap='RdBu_r', vmin=-0.5, vmax=0.5)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_xticks(np.arange(-1, 1.1, 0.5))
ax.set_yticks(np.arange(-1, 1.1, 0.5))
ax.set_zlabel('Z')
plt.show()

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

11、 NLTK

NLTK 是构建Python程序以处理自然语言的库。它为50多个语料库和词汇资源(如 WordNet )提供了易于使用的接口,以及一套用于分类、分词、词干、标记、解析和语义推理的文本处理库、工业级自然语言处理 (Natural Language Processing, NLP) 库的包装器。
NLTK被称为 “a wonderful tool for teaching, and working in, computational linguistics using Python”

import nltk
from nltk.corpus import treebank

nltk.download('punkt')
nltk.download('averaged_perceptron_tagger')
nltk.download('maxent_ne_chunker')
nltk.download('words')
nltk.download('treebank')

sentence = """At eight o'clock on Thursday morning Arthur didn't feel very good."""

tokens = nltk.word_tokenize(sentence)
tagged = nltk.pos_tag(tokens)

entities = nltk.chunk.ne_chunk(tagged)

t = treebank.parsed_sents('wsj_0001.mrg')[0]
t.draw()

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

12、 spaCy

spaCy 是一个免费的开源库,用于 Python 中的高级 NLP。它可以用于构建处理大量文本的应用程序;也可以用来构建信息提取或自然语言理解系统,或者对文本进行预处理以进行深度学习。

  import spacy

  texts = [
      "Net income was $9.4 million compared to the prior year of $2.7 million.",
      "Revenue exceeded twelve billion dollars, with a loss of $1b.",
  ]

  nlp = spacy.load("en_core_web_sm")
  for doc in nlp.pipe(texts, disable=["tok2vec", "tagger", "parser", "attribute_ruler", "lemmatizer"]):

      print([(ent.text, ent.label_) for ent in doc.ents])

nlp.pipe 生成 Doc 对象,因此我们可以对它们进行迭代并访问命名实体预测:

[('$9.4 million', 'MONEY'), ('the prior year', 'DATE'), ('$2.7 million', 'MONEY')]
[('twelve billion dollars', 'MONEY'), ('1b', 'MONEY')]

13、 LibROSA

librosa 是一个用于音乐和音频分析的 Python 库,它提供了创建音乐信息检索系统所必需的功能和函数。


import librosa

filename = librosa.example('nutcracker')

y, sr = librosa.load(filename)

tempo, beat_frames = librosa.beat.beat_track(y=y, sr=sr)
print('Estimated tempo: {:.2f} beats per minute'.format(tempo))

beat_times = librosa.frames_to_time(beat_frames, sr=sr)

14、 Pandas

Pandas 是一个快速、强大、灵活且易于使用的开源数据分析和操作工具, Pandas 可以从各种文件格式比如 CSV、JSON、SQL、Microsoft Excel 导入数据,可以对各种数据进行运算操作,比如归并、再成形、选择,还有数据清洗和数据加工特征。 Pandas 广泛应用在学术、金融、统计学等各个数据分析领域。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

ts = pd.Series(np.random.randn(1000), index=pd.date_range("1/1/2000", periods=1000))
ts = ts.cumsum()

df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list("ABCD"))
df = df.cumsum()
df.plot()
plt.show()

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

15、 Matplotlib

Matplotlib 是Python的绘图库,它提供了一整套和 matlab 相似的命令 API,可以生成出版质量级别的精美图形, Matplotlib 使绘图变得非常简单,在易用性和性能间取得了优异的平衡。
使用 Matplotlib 绘制多曲线图:


import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0.1, 2 * np.pi, 100)
y_1 = x
y_2 = np.square(x)
y_3 = np.log(x)
y_4 = np.sin(x)
plt.plot(x,y_1)
plt.plot(x,y_2)
plt.plot(x,y_3)
plt.plot(x,y_4)
plt.show()

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

16、 Seaborn

Seaborn 是在 Matplotlib 的基础上进行了更高级的API封装的Python数据可视化库,从而使得作图更加容易,应该把 Seaborn 视为 Matplotlib 的补充,而不是替代物。

import seaborn as sns
import matplotlib.pyplot as plt
sns.set_theme(style="ticks")

df = sns.load_dataset("penguins")
sns.pairplot(df, hue="species")
plt.show()

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

17、 Orange

Orange 是一个开源的数据挖掘和机器学习软件,提供了一系列的数据探索、可视化、预处理以及建模组件。 Orange 拥有漂亮直观的交互式用户界面,非常适合新手进行探索性数据分析和可视化展示;同时高级用户也可以将其作为 Python 的一个编程模块进行数据操作和组件开发。
使用 pip 即可安装 Orange,好评~

$ pip install orange3

安装完成后,在命令行输入 orange-canvas 命令即可启动 Orange 图形界面:

$ orange-canvas

启动完成后,即可看到 Orange 图形界面,进行各种操作。

Python机器学习、深度学习库总结(内含大量示例,建议收藏)

18、 PyBrain

PyBrainPython 的模块化机器学习库。它的目标是为机器学习任务和各种预定义的环境提供灵活、易于使用且强大的算法来测试和比较算法。 PyBrainPython-Based Reinforcement Learning, Artificial Intelligence and Neural Network Library 的缩写。
我们将利用一个简单的例子来展示 PyBrain 的用法,构建一个多层感知器 (Multi Layer Perceptron, MLP)。
首先,我们创建一个新的前馈网络对象:

from pybrain.structure import FeedForwardNetwork

n = FeedForwardNetwork()

接下来,构建输入、隐藏和输出层:

from pybrain.structure import LinearLayer, SigmoidLayer

inLayer = LinearLayer(2)
hiddenLayer = SigmoidLayer(3)
outLayer = LinearLayer(1)

为了使用所构建的层,必须将它们添加到网络中:

n.addInputModule(inLayer)
n.addModule(hiddenLayer)
n.addOutputModule(outLayer)

可以添加多个输入和输出模块。为了向前计算和反向误差传播,网络必须知道哪些层是输入、哪些层是输出。
这就需要明确确定它们应该如何连接。为此,我们使用最常见的连接类型,全连接层,由 FullConnection 类实现:

from pybrain.structure import FullConnection
in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)

与层一样,我们必须明确地将它们添加到网络中:

n.addConnection(in_to_hidden)
n.addConnection(hidden_to_out)

所有元素现在都已准备就位,最后,我们需要调用.sortModules()方法使MLP可用:

n.sortModules()

这个调用会执行一些内部初始化,这在使用网络之前是必要的。

19、 Milk

MILK(MACHINE LEARNING TOOLKIT) 是 Python 语言的机器学习工具包。它主要是包含许多分类器比如 SVMS、K-NN、随机森林以及决策树中使用监督分类法,它还可执行特征选择,可以形成不同的例如无监督学习、密切关系传播和由 MILK 支持的 K-means 聚类等分类系统。
使用 MILK 训练一个分类器:

import numpy as np
import milk
features = np.random.rand(100,10)
labels = np.zeros(100)
features[50:] += .5
labels[50:] = 1
learner = milk.defaultclassifier()
model = learner.train(features, labels)

example = np.random.rand(10)
print(model.apply(example))
example2 = np.random.rand(10)
example2 += .5
print(model.apply(example2))

20、 TensorFlow

TensorFlow 是一个端到端开源机器学习平台。它拥有一个全面而灵活的生态系统,一般可以将其分为 TensorFlow1.x 和 TensorFlow2.x,TensorFlow1.x 与 TensorFlow2.x 的主要区别在于 TF1.x 使用静态图而 TF2.x 使用Eager Mode动态图。
这里主要使用TensorFlow2.x作为示例,展示在 TensorFlow2.x 中构建卷积神经网络 (Convolutional Neural Network, CNN)。

import tensorflow as tf

from tensorflow.keras import datasets, layers, models

(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()

train_images, test_images = train_images / 255.0, test_images / 255.0

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10))

model.compile(optimizer='adam',
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
              metrics=['accuracy'])
history = model.fit(train_images, train_labels, epochs=10,
                    validation_data=(test_images, test_labels))

想要了解更多Tensorflow2.x的示例,可以参考专栏 Tensorflow.

21、 PyTorch

PyTorch 的前身是 Torch,其底层和 Torch 框架一样,但是使用 Python 重新写了很多内容,不仅更加灵活,支持动态图,而且提供了 Python 接口。


import torch
from torch import nn
from torch.utils.data import DataLoader
from torchvision import datasets
from torchvision.transforms import ToTensor, Lambda, Compose
import matplotlib.pyplot as plt

device = "cuda" if torch.cuda.is_available() else "cpu"
print("Using {} device".format(device))

class NeuralNetwork(nn.Module):
    def __init__(self):
        super(NeuralNetwork, self).__init__()
        self.flatten = nn.Flatten()
        self.linear_relu_stack = nn.Sequential(
            nn.Linear(28*28, 512),
            nn.ReLU(),
            nn.Linear(512, 512),
            nn.ReLU(),
            nn.Linear(512, 10),
            nn.ReLU()
        )

    def forward(self, x):
        x = self.flatten(x)
        logits = self.linear_relu_stack(x)
        return logits

model = NeuralNetwork().to(device)

loss_fn = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=1e-3)

def train(dataloader, model, loss_fn, optimizer):
    size = len(dataloader.dataset)
    for batch, (X, y) in enumerate(dataloader):
        X, y = X.to(device), y.to(device)

        pred = model(X)
        loss = loss_fn(pred, y)

        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        if batch % 100 == 0:
            loss, current = loss.item(), batch * len(X)
            print(f"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]")

22、 Theano

Theano 是一个 Python 库,它允许定义、优化和有效地计算涉及多维数组的数学表达式,建在 NumPy 之上。
Theano 中实现计算雅可比矩阵:

import theano
import theano.tensor as T
x = T.dvector('x')
y = x ** 2
J, updates = theano.scan(lambda i, y,x : T.grad(y[i], x), sequences=T.arange(y.shape[0]), non_sequences=[y,x])
f = theano.function([x], J, updates=updates)
f([4, 4])

23、 Keras

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验,能够以最小的时延把想法转换为实验结果。

from keras.models import Sequential
from keras.layers import Dense

model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))

model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=32)

24、 Caffe

Caffe2 官方网站上,这样说道: Caffe2 现在是 PyTorch 的一部分。虽然这些 api 将继续工作,但鼓励使用 PyTorch api。

25、 MXNet

MXNet 是一款设计为效率和灵活性的深度学习框架。它允许混合符号编程和命令式编程,从而最大限度提高效率和生产力。
使用 MXNet 构建手写数字识别模型:

import mxnet as mx
from mxnet import gluon
from mxnet.gluon import nn
from mxnet import autograd as ag
import mxnet.ndarray as F

mnist = mx.test_utils.get_mnist()
batch_size = 100
train_data = mx.io.NDArrayIter(mnist['train_data'], mnist['train_label'], batch_size, shuffle=True)
val_data = mx.io.NDArrayIter(mnist['test_data'], mnist['test_label'], batch_size)

class Net(gluon.Block):
    def __init__(self, **kwargs):
        super(Net, self).__init__(**kwargs)
        self.conv1 = nn.Conv2D(20, kernel_size=(5,5))
        self.pool1 = nn.MaxPool2D(pool_size=(2,2), strides = (2,2))
        self.conv2 = nn.Conv2D(50, kernel_size=(5,5))
        self.pool2 = nn.MaxPool2D(pool_size=(2,2), strides = (2,2))
        self.fc1 = nn.Dense(500)
        self.fc2 = nn.Dense(10)

    def forward(self, x):
        x = self.pool1(F.tanh(self.conv1(x)))
        x = self.pool2(F.tanh(self.conv2(x)))

        x = x.reshape((0, -1))
        x = F.tanh(self.fc1(x))
        x = F.tanh(self.fc2(x))
        return x
net = Net()

ctx = [mx.gpu() if mx.test_utils.list_gpus() else mx.cpu()]
net.initialize(mx.init.Xavier(magnitude=2.24), ctx=ctx)
trainer = gluon.Trainer(net.collect_params(), 'sgd', {'learning_rate': 0.03})

metric = mx.metric.Accuracy()
softmax_cross_entropy_loss = gluon.loss.SoftmaxCrossEntropyLoss()

for i in range(epoch):

    train_data.reset()
    for batch in train_data:
        data = gluon.utils.split_and_load(batch.data[0], ctx_list=ctx, batch_axis=0)
        label = gluon.utils.split_and_load(batch.label[0], ctx_list=ctx, batch_axis=0)
        outputs = []

        with ag.record():
            for x, y in zip(data, label):
                z = net(x)

                loss = softmax_cross_entropy_loss(z, y)

                loss.backward()
                outputs.append(z)
        metric.update(label, outputs)
        trainer.step(batch.data[0].shape[0])

    name, acc = metric.get()

    metric.reset()
    print('training acc at epoch %d: %s=%f'%(i, name, acc))

26、 PaddlePaddle

飞桨 (PaddlePaddle) 以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件于一体。是中国首个自主研发、功能完备、开源开放的产业级深度学习平台。
使用 PaddlePaddle 实现 LeNtet5


import paddle
import numpy as np
from paddle.nn import Conv2D, MaxPool2D, Linear

import paddle.nn.functional as F

class LeNet(paddle.nn.Layer):
    def __init__(self, num_classes=1):
        super(LeNet, self).__init__()

        self.conv1 = Conv2D(in_channels=1, out_channels=6, kernel_size=5)
        self.max_pool1 = MaxPool2D(kernel_size=2, stride=2)

        self.conv2 = Conv2D(in_channels=6, out_channels=16, kernel_size=5)
        self.max_pool2 = MaxPool2D(kernel_size=2, stride=2)

        self.conv3 = Conv2D(in_channels=16, out_channels=120, kernel_size=4)

        self.fc1 = Linear(in_features=120, out_features=64)

        self.fc2 = Linear(in_features=64, out_features=num_classes)

    def forward(self, x):
        x = self.conv1(x)

        x = F.sigmoid(x)
        x = self.max_pool1(x)
        x = F.sigmoid(x)
        x = self.conv2(x)
        x = self.max_pool2(x)
        x = self.conv3(x)

        x = paddle.reshape(x, [x.shape[0], -1])
        x = self.fc1(x)
        x = F.sigmoid(x)
        x = self.fc2(x)
        return x

27、 CNTK

CNTK(Cognitive Toolkit) 是一个深度学习工具包,通过有向图将神经网络描述为一系列计算步骤。在这个有向图中,叶节点表示输入值或网络参数,而其他节点表示对其输入的矩阵运算。 CNTK 可以轻松地实现和组合流行的模型类型,如 CNN 等。
CNTK 用网络描述语言 (network description language, NDL) 描述一个神经网络。 简单的说,要描述输入的 feature,输入的 label,一些参数,参数和输入之间的计算关系,以及目标节点是什么。

NDLNetworkBuilder=[

    run=ndlLR

    ndlLR=[

      SDim=$dimension$
      LDim=1

      features=Input(SDim, 1)
      labels=Input(LDim, 1)

      B0 = Parameter(4)
      W0 = Parameter(4, SDim)

      B = Parameter(LDim)
      W = Parameter(LDim, 4)

      t0 = Times(W0, features)
      z0 = Plus(t0, B0)
      s0 = Sigmoid(z0)

      t = Times(W, s0)
      z = Plus(t, B)
      s = Sigmoid(z)

      LR = Logistic(labels, s)
      EP = SquareError(labels, s)

      FeatureNodes=(features)
      LabelNodes=(labels)
      CriteriaNodes=(LR)
      EvalNodes=(EP)
      OutputNodes=(s,t,z,s0,W0)
    ]
  ]

总结与分类

python 常用机器学习及深度学习库总结

库名官方网站简介NumPy
http://www.numpy.org/

提供对大型多维阵列的支持,NumPy是计算机视觉中的一个关键库,因为图像可以表示为多维数组,将图像表示为NumPy数组有许多优点OpenCV
https://opencv.org/

开源的计算机视觉库Scikit-image
https:// scikit-image.org/

图像处理算法的集合,由scikit-image操作的图像只能是NumPy数组Python Imaging Library(PIL)
http://www.pythonware.com/products/pil/

图像处理库,提供强大的图像处理和图形功能Pillow
https://pillow.readthedocs.io/

PIL的一个分支SimpleCV
http://simplecv.org/

计算机视觉框架,提供了处理图像处理的关键功能Mahotas
https://mahotas.readthedocs.io/

提供了用于图像处理和计算机视觉的一组函数,它最初是为生物图像信息学而设计的;但是,现在它在其他领域也发挥了重要作用,它完全基于numpy数组作为其数据类型Ilastik
http://ilastik.org/

用户友好且简单的交互式图像分割、分类和分析工具Scikit-learn
http://scikit-learn.org/

机器学习库,具有各种分类、回归和聚类算法SciPy
https://www.scipy.org/

科学和技术计算库NLTK
https://www.nltk.org/

处理自然语言数据的库和程序spaCy
https://spacy.io/

开源软件库,用于Python中的高级自然语言处理LibROSA
https://librosa.github.io/librosa/

用于音乐和音频处理的库Pandas
https://pandas.pydata.org/

构建在NumPy之上的库,提供高级数据计算工具和易于使用的数据结构Matplotlib
https://matplotlib.org

绘图库,它提供了一整套和 matlab 相似的命令 API,可以生成所需的出版质量级别的图形Seaborn
https://seaborn.pydata.org/

是建立在Matplotlib之上的绘图库Orange
https://orange.biolab.si/

面向新手和专家的开源机器学习和数据可视化工具包PyBrain
http://pybrain.org/

机器学习库,为机器学习提供易于使用的最新算法Milk
http://luispedro.org/software/milk/

机器学习工具箱,主要用于监督学习中的多分类问题TensorFlow
https://www.tensorflow.org/

开源的机器学习和深度学习库PyTorch
https://pytorch.org/

开源的机器学习和深度学习库Theano
http://deeplearning.net/software/theano/

用于快速数学表达式、求值和计算的库,已编译为可在CPU和GPU架构上运行Keras
https://keras.io/

高级深度学习库,可以在 TensorFlow、CNTK、Theano 或 Microsoft Cognitive Toolkit 之上运行Caffe2
https://caffe2.ai/

Caffe2 是一个兼具表现力、速度和模块性的深度学习框架,是 Caffe 的实验性重构,能以更灵活的方式组织计算MXNet
https://mxnet.apache.org/

设计为效率和灵活性的深度学习框架,允许混合符号编程和命令式编程PaddlePaddle
https://www.paddlepaddle.org.cn

以百度多年的深度学习技术研究和业务应用为基础,集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件于一体CNTK
https://cntk.ai/

深度学习工具包,通过有向图将神经网络描述为一系列计算步骤。在这个有向图中,叶节点表示输入值或网络参数,而其他节点表示对其输入的矩阵运算

分类

可以根据其主要用途将这些库进行分类:

类别库图像处理NumPy、OpenCV、scikit image、PIL、Pillow、SimpleCV、Mahotas、ilastik文本处理NLTK、spaCy、NumPy、scikit learn、PyTorch音频处理LibROSA机器学习pandas, scikit-learn, Orange, PyBrain, Milk数据查看Matplotlib、Seaborn、scikit-learn、Orange深度学习TensorFlow、Pytorch、Theano、Keras、Caffe2、MXNet、PaddlePaddle、CNTK科学计算SciPy

更多

有关 AI 和机器学习的其他 Python 库和包,可以访问https://python.libhunt.com/packages/artificial-intelligence.

Original: https://blog.csdn.net/LOVEmy134611/article/details/118761423
Author: 盼小辉丶
Title: Python机器学习、深度学习库总结(内含大量示例,建议收藏)

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

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

(0)

大家都在看

  • python下opencv安装

    1、查看python版本cmd输入命令行,python。2、根据对应python版本,去https://www.lfd.uci.edu/~gohlke/pythonlibs/,下载…

    Python 2023年8月2日
    078
  • 数据预处理:缺失值处理

    【小白从小学Python、C、Java】 【Python全国计算机等级考试】 【Python数据分析考试必会题】 ● 标题与摘要 Python数据分析中的 数据预处理:缺失值处理 …

    Python 2023年8月20日
    071
  • seaborn简明教程(一)

    1. Seaborn简介 seaborn是基于 matplotlib的数据可视化库。它在 matplotlib的基础上,进行了更高级的API封装,从而使得绘图更加容易,不需要经过大…

    Python 2023年9月5日
    041
  • Django命令

    Django命令 原创 wx5e6caa8b9792d2022-08-01 17:12:04博主文章分类:Python自动化开发 ©著作权 文章标签 python django 文…

    Python 2023年5月24日
    059
  • 从 0 到 1 构建一个自己的 Docker 应用

    Docker,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 Docker”真香定律&#…

    Python 2023年8月9日
    048
  • docker实战django(一) —— Docker 建立 Django + PostgreSQL

    大佬github链接,项目从这里下载 参考大佬视频链接视频链接2 需科学swdjango rest介绍参考链接认识RESTful API链接(注意以下默认你已经在Windows下安…

    Python 2023年8月4日
    054
  • 架构设计(三):引入缓存

    架构设计(三):引入缓存 作者:Grey 原文地址: 博客园:架构设计(三):引入缓存 CSDN:架构设计(三):引入缓存 缓存是一个临时存储区域,如果请求的数据获取代价比较高或者…

    Python 2023年10月12日
    031
  • python列表的创建

    列表是任何元素的序列,而字符串只是一个字符序列,二者均为序列类型 1.基本语法[]创建 []创建空的列表对象,a=[10,20,’abc’] 2.list(…

    Python 2023年8月2日
    049
  • 零基础学Python Web开发在线考试系统-Django框架入门项目第6课-静态文件(真正带你上路玩转实战项目开发)

    提示:需要下载代码的朋友可以去上面的开源项目库中拉代码,想参与一起学习的同学可以一起加入项目组中开发 零基础学Python Web开发在线考试系统-Django框架入门项目系列课程…

    Python 2023年8月6日
    048
  • 针对Numpy中axis的理解

    针对numpy中经常看到axis这个参数。这里对axis这个参数的学习做个记录。 本文章以numpy.mean()函数为例 一、numpy.mean()不带任何参数的时候 不带任何…

    Python 2023年8月28日
    039
  • python升采样和插值_重采样和插值

    在理解如何将数据重新采样为小时速率而不是现在的4小时数据块时,仍被困在一项任务上。这是我们要求做的。在 ENTRIES和EXITS字段保存每周不重置为零的原始计数。我们想知道4小时…

    Python 2023年8月8日
    044
  • NumPy创建区间数组

    所谓区间数组,是指数组元素的取值位于某个范围内,并且数组元素之间可能会呈现某种规律,比如等比数列、递增、递减等。 为了方便科学计算,Python NumPy 支持创建区间数组。 1…

    Python 2023年8月26日
    037
  • DGL安装教程

    诸神缄默不语-个人CSDN博文目录 DGL官方安装教程网址:Deep Graph Library 以下仅考虑Linux系统的情况。(在Windows上跑GNN是不是太身残志坚了) …

    Python 2023年8月1日
    061
  • python中dataframe是什么_Python中的DataFrame模块学

    本文是基于Windows系统环境,学习和测试DataFrame模块: Windows 10 PyCharm 2018.3.5 for Windows (exe) python 3….

    Python 2023年8月20日
    044
  • python两列数据相加_python数据框中每列相加_python – Pandas数据帧中每两列的总和…

    1)通过提供axis = 1来执行w.r.t列的groupby.根据Per @ Boud的评论,你可以通过分组数组中的小调整得到你想要的结果: df.groupby((np.ara…

    Python 2023年8月7日
    061
  • python爬虫从0到1-Scrapy框架的介绍

    文章目录 前言 (一)什么是Scrapy (二)基本功能 (三)基本架构 (四)Scrapy框架的基本使用 * (1)创建爬虫的项目 (2)创建爬虫的文件 (3)执行爬虫文件 (五…

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