【DSW Gallery】使用Numpy实现卷积神经网络

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,5000CU*H 3个月
简介: Numpy是数值计算中使用非常广泛的一个工具包,可以进行高纬度空间内部的矩阵运算。本文以CNN为例子,使用Numpy来实现CNN网络的前向传递和反向传递逻辑。对于了解CNN网络的细节以及学习如何使用Numpy都很有帮助。

直接使用

请打开使用Numpy实现卷积神经网络,并点击右上角 “ 在DSW中打开” 。

image.png

使用Numpy实现CNN的前向网络以及反向传播

本文用到的数据集来自Kaggle,可以在这里下载

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
data = pd.read_csv('train_numpy.csv')
data.shape
(2290, 785)
data = np.array(data)
m, n = data.shape
np.random.shuffle(data) # shuffle before splitting into dev and training sets
data_dev = data[0:1000].T
Y_dev = data_dev[0]
X_dev = data_dev[1:n]
X_dev = X_dev / 255.
data_train = data[1000:m].T
Y_train = data_train[0]
X_train = data_train[1:n]
X_train = X_train / 255.
_,m_train = X_train.shape

本例中,我们定义一个只有两层的卷积神经网络

  1. Activate function选的是 Relu,因为它可以有效的改善梯度弥散现象
  2. 最后会通过Softmax将各个神经元的输出结果转化为[0,1]之间的数字

前向传递

13-1.png

反向传递

13-2.png

参数更新的计算公式

13-3.png

根据上面的公式,定义activation function

def init_params():
    W1 = np.random.rand(10, 784) - 0.5
    b1 = np.random.rand(10, 1) - 0.5
    W2 = np.random.rand(10, 10) - 0.5
    b2 = np.random.rand(10, 1) - 0.5
    return W1, b1, W2, b2
def ReLU(Z):
    return np.maximum(Z, 0)
def ReLU_deriv(Z):
    return Z > 0
def softmax(Z):
    A = np.exp(Z) / sum(np.exp(Z))
    return A

定义前向传递的函数和反向传递的函数

def forward_prop(W1, b1, W2, b2, X):
    Z1 = W1.dot(X) + b1
    A1 = ReLU(Z1)
    Z2 = W2.dot(A1) + b2
    A2 = softmax(Z2)
    return Z1, A1, Z2, A2
def one_hot(Y):
    one_hot_Y = np.zeros((Y.size, int(Y.max()) + 1)).astype(int)
    one_hot_Y[np.arange(Y.size), Y.astype(int)] = 1
    one_hot_Y = one_hot_Y.T
    return one_hot_Y
def backward_prop(Z1, A1, Z2, A2, W1, W2, X, Y):
    one_hot_Y = one_hot(Y)
    dZ2 = A2 - one_hot_Y
    dW2 = 1 / m * dZ2.dot(A1.T)
    db2 = 1 / m * np.sum(dZ2)
    dZ1 = W2.T.dot(dZ2) * ReLU_deriv(Z1)
    dW1 = 1 / m * dZ1.dot(X.T)
    db1 = 1 / m * np.sum(dZ1)
    return dW1, db1, dW2, db2
def update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha):
    W1 = W1 - alpha * dW1
    b1 = b1 - alpha * db1    
    W2 = W2 - alpha * dW2  
    b2 = b2 - alpha * db2    
    return W1, b1, W2, b2

定义预测、梯度下降还有计算精确度的函数

def get_predictions(A2):
    return np.argmax(A2, 0)
def get_accuracy(predictions, Y):
    print(predictions, Y)
    return np.sum(predictions == Y) / Y.size
def gradient_descent(X, Y, alpha, iterations):
    W1, b1, W2, b2 = init_params()
    for i in range(iterations):
        Z1, A1, Z2, A2 = forward_prop(W1, b1, W2, b2, X)
        dW1, db1, dW2, db2 = backward_prop(Z1, A1, Z2, A2, W1, W2, X, Y)
        W1, b1, W2, b2 = update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha)
        if i % 10 == 0:
            print("Iteration: ", i)
            predictions = get_predictions(A2)
            print(get_accuracy(predictions, Y))
    return W1, b1, W2, b2

开始训练

W1, b1, W2, b2 = gradient_descent(X_train, Y_train, 0.10, 500)

image.png

Iteration:  0
[2 2 2 ... 1 3 2] [9. 7. 2. ... 5. 6. 0.]
0.1263565891472868
Iteration:  10
[1 1 0 ... 1 3 6] [9. 7. 2. ... 5. 6. 0.]
0.1821705426356589
Iteration:  20
[1 1 2 ... 4 0 6] [9. 7. 2. ... 5. 6. 0.]
0.2372093023255814
Iteration:  30
[1 1 6 ... 0 0 6] [9. 7. 2. ... 5. 6. 0.]
0.29147286821705426
Iteration:  40
[1 1 6 ... 0 0 6] [9. 7. 2. ... 5. 6. 0.]
0.3333333333333333
Iteration:  50
[1 1 6 ... 0 0 0] [9. 7. 2. ... 5. 6. 0.]
0.38527131782945734
Iteration:  60
[1 1 6 ... 0 0 0] [9. 7. 2. ... 5. 6. 0.]
0.4325581395348837
Iteration:  70
[1 1 2 ... 0 0 0] [9. 7. 2. ... 5. 6. 0.]
0.4906976744186046
Iteration:  80
[5 7 2 ... 0 0 0] [9. 7. 2. ... 5. 6. 0.]
0.537984496124031
Iteration:  90
[5 7 2 ... 0 0 0] [9. 7. 2. ... 5. 6. 0.]
0.5612403100775194
Iteration:  100
[5 7 2 ... 0 0 0] [9. 7. 2. ... 5. 6. 0.]
0.5844961240310077
Iteration:  110
[5 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.6069767441860465
Iteration:  120
[5 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.624031007751938
Iteration:  130
[5 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.6403100775193798
Iteration:  140
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.662015503875969
Iteration:  150
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.6713178294573643
Iteration:  160
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.6922480620155039
Iteration:  170
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.6992248062015504
Iteration:  180
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7116279069767442
Iteration:  190
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7162790697674418
Iteration:  200
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.724031007751938
Iteration:  210
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.727906976744186
Iteration:  220
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7333333333333333
Iteration:  230
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7395348837209302
Iteration:  240
[9 7 2 ... 0 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7434108527131783
Iteration:  250
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7550387596899225
Iteration:  260
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7581395348837209
Iteration:  270
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7697674418604651
Iteration:  280
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7751937984496124
Iteration:  290
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7798449612403101
Iteration:  300
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7821705426356589
Iteration:  310
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7883720930232558
Iteration:  320
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7937984496124031
Iteration:  330
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.7968992248062016
Iteration:  340
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8007751937984496
Iteration:  350
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8062015503875969
Iteration:  360
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8093023255813954
Iteration:  370
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8147286821705426
Iteration:  380
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8178294573643411
Iteration:  390
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8217054263565892
Iteration:  400
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8224806201550388
Iteration:  410
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8255813953488372
Iteration:  420
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8255813953488372
Iteration:  430
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8263565891472868
Iteration:  440
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8310077519379845
Iteration:  450
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8333333333333334
Iteration:  460
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8348837209302326
Iteration:  470
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8395348837209302
Iteration:  480
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8395348837209302
Iteration:  490
[9 7 2 ... 5 6 0] [9. 7. 2. ... 5. 6. 0.]
0.8418604651162791
def make_predictions(X, W1, b1, W2, b2):
    _, _, _, A2 = forward_prop(W1, b1, W2, b2, X)
    predictions = get_predictions(A2)
    return predictions
def test_prediction(index, W1, b1, W2, b2):
    current_image = X_train[:, index, None]
    prediction = make_predictions(X_train[:, index, None], W1, b1, W2, b2)
    label = Y_train[index]
    print("Prediction: ", prediction)
    print("Label: ", label)
    current_image = current_image.reshape((28, 28)) * 255
    plt.gray()
    plt.imshow(current_image, interpolation='nearest')
    plt.show()

下面我们选择几个输入,看一下我们的CNN模型是否能够正确识别图片中的字

test_prediction(0, W1, b1, W2, b2)
test_prediction(1, W1, b1, W2, b2)
test_prediction(2, W1, b1, W2, b2)
test_prediction(3, W1, b1, W2, b2)
Prediction:  [9]
Label:  9.0

13-4.png

Prediction:  [7]
Label:  7.0

13-5.png

Prediction:  [2]
Label:  2.0

13-6.png

Prediction:  [7]
Label:  7.0

13-7.png

计算一下模型对整个的数据集的精确度

dev_predictions = make_predictions(X_dev, W1, b1, W2, b2)
print("Accuracy: ",get_accuracy(dev_predictions, Y_dev))

image.png

[6 3 0 4 8 6 8 0 8 4 9 7 5 9 9 8 1 8 8 8 9 9 8 4 6 0 9 4 1 7 5 6 4 0 4 7 0
 8 9 1 9 4 8 3 1 1 8 7 9 1 9 7 0 4 9 2 8 5 2 9 9 7 9 5 4 4 2 1 6 9 7 6 2 4
 0 9 5 5 1 8 7 6 3 3 8 4 8 4 9 2 2 3 0 9 7 7 6 9 9 9 9 3 4 7 8 9 7 1 1 3 0
 4 7 1 4 1 7 8 1 4 9 2 7 6 8 9 3 5 8 9 2 3 0 7 1 9 4 9 0 9 8 2 6 9 6 0 1 3
 4 5 4 9 4 0 0 4 8 1 9 0 9 7 8 8 1 5 5 7 8 0 2 5 5 3 6 3 9 3 4 1 0 1 1 9 8
 0 9 8 7 0 1 1 4 2 2 6 7 8 2 7 9 1 2 3 1 1 5 2 5 6 8 4 0 2 4 6 6 6 1 8 8 7
 7 2 2 3 4 0 6 9 8 0 5 9 4 1 2 7 8 3 7 9 9 7 7 9 1 3 2 0 5 9 3 6 8 8 6 3 1
 1 7 3 0 6 6 2 8 1 3 2 8 8 4 8 1 8 1 8 9 7 6 8 7 6 4 4 4 2 4 7 2 9 6 9 1 1
 9 8 0 1 0 8 8 9 3 2 1 7 1 8 4 0 9 9 9 2 6 0 3 6 0 4 0 1 7 0 4 2 5 2 2 9 2
 7 6 0 9 6 0 8 7 1 7 0 9 8 0 4 5 2 6 6 6 0 6 9 7 5 8 7 3 6 5 8 3 4 7 6 1 2
 2 9 9 9 6 3 0 2 9 1 6 7 9 5 1 9 4 9 4 9 2 1 7 6 8 6 3 7 5 0 8 4 3 1 1 0 6
 2 4 9 7 1 6 2 8 1 2 0 0 9 8 9 9 8 4 1 0 7 6 0 0 7 1 0 8 9 4 1 7 4 0 6 7 0
 7 5 4 1 9 9 6 7 4 1 0 1 6 9 1 8 3 4 1 7 7 1 8 0 2 7 2 0 0 2 7 7 2 3 3 5 3
 4 7 3 1 1 2 0 6 1 8 6 0 4 9 1 6 0 2 6 6 6 7 8 5 3 6 4 6 1 3 4 8 6 4 6 6 0
 5 5 1 6 4 1 0 8 2 6 0 1 1 3 7 9 7 4 4 7 1 9 3 9 8 9 2 9 0 2 7 1 1 7 1 2 6
 4 9 7 3 3 4 9 3 2 2 2 0 0 6 2 1 3 7 4 4 8 1 2 3 7 5 8 8 5 8 2 5 2 3 8 1 0
 2 5 8 6 1 0 7 0 3 7 3 6 4 0 5 9 1 2 5 9 8 7 2 2 8 8 4 2 4 5 5 7 7 0 8 2 1
 0 3 0 4 5 0 7 9 9 2 4 0 4 6 2 9 2 2 6 9 0 4 0 8 8 2 4 6 1 9 7 5 4 4 6 1 7
 1 1 0 0 1 2 3 1 4 6 0 3 6 7 0 6 9 6 3 0 0 1 5 5 3 8 0 1 1 5 8 9 1 4 4 5 6
 7 9 6 4 4 8 1 4 0 2 6 2 0 7 4 9 4 8 9 1 9 1 4 0 6 3 7 5 1 0 0 8 0 0 6 2 7
 1 5 0 9 4 8 1 7 1 5 1 0 9 5 6 1 2 9 6 5 4 8 9 5 2 8 7 5 2 7 4 3 0 5 5 3 8
 5 9 8 1 8 8 5 4 8 0 2 6 1 0 7 4 0 3 7 4 0 0 4 7 6 6 2 5 1 4 7 4 9 3 5 3 2
 1 3 0 7 4 3 2 7 2 7 1 3 7 4 3 8 6 8 0 7 6 4 2 4 9 6 0 7 2 7 4 2 8 4 4 8 1
 9 4 7 2 2 8 6 0 3 2 8 2 1 4 4 8 4 6 0 0 2 3 6 7 6 8 7 0 4 6 2 1 4 2 1 6 1
 2 1 4 5 6 5 9 0 4 9 9 1 9 3 3 5 1 2 1 1 0 9 7 6 2 6 8 3 8 6 0 9 9 2 0 3 0
 5 6 4 3 8 6 1 1 6 0 9 4 9 2 4 6 8 9 0 2 3 0 1 1 3 3 5 4 0 1 2 8 0 9 8 6 7
 4 8 4 6 0 4 9 6 2 5 9 9 7 6 5 4 1 4 5 0 5 8 4 6 6 0 0 6 1 3 7 0 5 7 4 0 7
 2] [6. 5. 0. 4. 8. 6. 8. 2. 5. 4. 9. 7. 0. 9. 9. 8. 1. 3. 8. 8. 9. 9. 8. 8.
 6. 0. 9. 4. 1. 7. 5. 6. 4. 0. 4. 7. 0. 8. 9. 1. 5. 4. 8. 3. 1. 1. 8. 7.
 9. 1. 4. 7. 0. 4. 3. 8. 5. 5. 2. 9. 9. 7. 9. 3. 6. 4. 2. 1. 6. 9. 9. 6.
 2. 4. 0. 9. 5. 0. 1. 5. 7. 6. 3. 8. 8. 4. 8. 4. 4. 2. 2. 3. 0. 9. 7. 9.
 6. 9. 7. 4. 9. 3. 8. 7. 8. 4. 7. 1. 1. 3. 0. 4. 7. 2. 4. 1. 7. 3. 1. 8.
 9. 2. 7. 6. 8. 9. 3. 5. 8. 9. 2. 3. 5. 7. 3. 4. 4. 4. 0. 9. 8. 2. 6. 9.
 6. 0. 1. 3. 4. 5. 4. 7. 4. 2. 0. 4. 5. 1. 1. 0. 9. 7. 1. 8. 1. 5. 5. 7.
 3. 3. 2. 5. 5. 3. 6. 0. 9. 3. 7. 1. 0. 1. 1. 2. 8. 0. 9. 8. 7. 0. 1. 1.
 4. 2. 2. 6. 9. 8. 2. 8. 9. 1. 5. 3. 1. 1. 5. 2. 5. 4. 6. 4. 0. 2. 4. 6.
 6. 6. 2. 3. 8. 7. 7. 2. 2. 3. 4. 0. 6. 5. 8. 0. 5. 9. 4. 1. 2. 7. 1. 9.
 3. 4. 4. 9. 7. 9. 1. 3. 2. 0. 5. 9. 9. 6. 8. 8. 6. 8. 1. 1. 3. 3. 0. 6.
 6. 2. 8. 1. 3. 2. 5. 9. 4. 8. 1. 4. 1. 8. 8. 7. 6. 3. 7. 8. 4. 4. 4. 2.
 4. 9. 2. 9. 6. 9. 1. 1. 4. 8. 0. 1. 0. 8. 8. 7. 3. 2. 1. 7. 1. 8. 4. 0.
 9. 9. 4. 2. 6. 0. 3. 6. 0. 4. 6. 2. 9. 0. 5. 2. 1. 2. 2. 9. 2. 7. 6. 0.
 4. 6. 2. 8. 7. 1. 7. 0. 4. 8. 3. 4. 5. 2. 6. 6. 6. 0. 6. 9. 7. 5. 8. 7.
 3. 6. 5. 8. 8. 4. 9. 6. 1. 2. 2. 9. 9. 9. 2. 3. 0. 2. 9. 1. 6. 7. 9. 3.
 1. 9. 4. 9. 7. 9. 2. 5. 7. 6. 8. 8. 3. 7. 5. 0. 8. 4. 3. 1. 1. 0. 4. 2.
 4. 9. 9. 1. 6. 2. 5. 1. 2. 0. 0. 9. 8. 9. 9. 3. 4. 1. 0. 7. 6. 5. 0. 7.
 1. 0. 8. 9. 4. 2. 7. 4. 0. 6. 7. 5. 7. 3. 4. 1. 9. 7. 6. 9. 4. 1. 7. 1.
 0. 9. 1. 8. 3. 4. 1. 7. 7. 1. 8. 0. 0. 7. 4. 0. 0. 2. 9. 7. 2. 3. 3. 5.
 3. 4. 9. 3. 1. 1. 2. 0. 4. 1. 8. 6. 0. 4. 9. 1. 5. 0. 2. 6. 6. 5. 7. 8.
 5. 3. 2. 4. 9. 2. 3. 9. 9. 6. 4. 6. 6. 0. 5. 5. 1. 6. 4. 3. 0. 8. 2. 6.
 0. 1. 1. 3. 7. 9. 7. 4. 9. 5. 1. 9. 3. 9. 8. 9. 2. 9. 0. 2. 7. 1. 5. 7.
 2. 2. 6. 4. 4. 7. 3. 3. 4. 7. 2. 2. 2. 2. 0. 0. 5. 2. 1. 3. 7. 7. 4. 8.
 1. 2. 5. 7. 5. 9. 8. 5. 8. 2. 5. 2. 2. 8. 1. 0. 2. 5. 5. 6. 1. 0. 7. 0.
 3. 7. 3. 2. 4. 0. 5. 9. 6. 2. 5. 9. 8. 7. 6. 2. 8. 4. 4. 2. 4. 5. 5. 7.
 7. 0. 8. 2. 1. 0. 3. 0. 4. 5. 0. 7. 9. 9. 2. 4. 5. 4. 6. 2. 9. 2. 2. 6.
 4. 0. 4. 7. 8. 9. 2. 0. 6. 1. 9. 7. 8. 4. 4. 9. 1. 7. 1. 1. 0. 2. 2. 2.
 3. 1. 9. 6. 0. 3. 6. 7. 3. 2. 9. 6. 3. 2. 0. 1. 8. 5. 3. 5. 5. 1. 1. 5.
 8. 4. 1. 4. 9. 5. 6. 7. 4. 6. 4. 4. 8. 1. 4. 0. 2. 6. 2. 0. 7. 4. 9. 4.
 8. 9. 1. 9. 1. 4. 0. 6. 3. 7. 5. 1. 0. 6. 5. 0. 0. 6. 2. 2. 1. 5. 0. 4.
 4. 8. 1. 8. 1. 3. 5. 0. 9. 3. 6. 8. 2. 9. 6. 5. 6. 8. 9. 5. 2. 1. 9. 5.
 2. 7. 4. 3. 5. 5. 3. 3. 8. 5. 4. 8. 1. 5. 8. 5. 5. 8. 0. 3. 6. 1. 0. 7.
 9. 0. 7. 7. 4. 6. 0. 4. 7. 6. 3. 2. 5. 1. 9. 7. 4. 3. 3. 5. 3. 2. 1. 3.
 0. 7. 4. 3. 2. 7. 2. 7. 1. 8. 7. 4. 3. 5. 6. 8. 3. 7. 6. 4. 2. 4. 4. 6.
 0. 7. 2. 7. 6. 2. 5. 4. 4. 8. 2. 9. 4. 3. 2. 2. 8. 6. 0. 3. 2. 8. 2. 1.
 4. 4. 9. 4. 6. 5. 0. 2. 0. 6. 7. 2. 8. 5. 3. 5. 6. 2. 7. 6. 2. 1. 6. 1.
 2. 1. 4. 5. 6. 5. 9. 0. 4. 9. 4. 1. 9. 3. 8. 5. 1. 8. 1. 1. 2. 8. 5. 6.
 2. 6. 8. 3. 2. 6. 0. 4. 4. 2. 0. 3. 0. 5. 6. 6. 3. 8. 7. 1. 1. 6. 0. 9.
 4. 9. 5. 4. 2. 5. 9. 0. 2. 3. 0. 1. 1. 3. 3. 5. 9. 0. 7. 2. 8. 6. 7. 8.
 4. 7. 4. 8. 4. 6. 0. 4. 4. 6. 2. 4. 4. 9. 7. 6. 5. 4. 1. 9. 4. 0. 8. 8.
 4. 1. 6. 0. 0. 6. 6. 3. 4. 0. 3. 7. 4. 0. 9. 8.]
Accuracy:  0.784
相关实践学习
使用PAI-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
14天前
|
机器学习/深度学习 计算机视觉 Python
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力本文提出了一种简单且高效的卷积神经网络(ConvNets)注意力模块——SimAM。与现有模块不同,SimAM通过优化能量函数推断特征图的3D注意力权重,无需添加额外参数。SimAM基于空间抑制理论设计,通过简单的解决方案实现高效计算,提升卷积神经网络的表征能力。代码已在Pytorch-SimAM开源。
【YOLOv11改进 - 注意力机制】SimAM:轻量级注意力机制,解锁卷积神经网络新潜力
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络:从理论到实践
【10月更文挑战第35天】在人工智能的浪潮中,深度学习技术以其强大的数据处理能力成为科技界的宠儿。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,在图像识别和视频分析等领域展现出了惊人的潜力。本文将深入浅出地介绍CNN的工作原理,并结合实际代码示例,带领读者从零开始构建一个简单的CNN模型,探索其在图像分类任务中的应用。通过本文,读者不仅能够理解CNN背后的数学原理,还能学会如何利用现代深度学习框架实现自己的CNN模型。
|
6天前
|
机器学习/深度学习 人工智能 算法框架/工具
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第36天】探索卷积神经网络(CNN)的神秘面纱,揭示其在图像识别领域的威力。本文将带你了解CNN的核心概念,并通过实际代码示例,展示如何构建和训练一个简单的CNN模型。无论你是深度学习的初学者还是希望深化理解,这篇文章都将为你提供有价值的见解。
|
17天前
|
机器学习/深度学习 监控 自动驾驶
卷积神经网络有什么应用场景
【10月更文挑战第23天】卷积神经网络有什么应用场景
18 2
|
17天前
|
机器学习/深度学习 自然语言处理 算法
什么是卷积神经网络
【10月更文挑战第23天】什么是卷积神经网络
24 1
|
20天前
|
机器学习/深度学习 人工智能 算法
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
车辆车型识别,使用Python作为主要编程语言,通过收集多种车辆车型图像数据集,然后基于TensorFlow搭建卷积网络算法模型,并对数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django搭建web网页端操作界面,实现用户上传一张车辆图片识别其类型。
65 0
【车辆车型识别】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+算法模型
|
7天前
|
机器学习/深度学习 人工智能 自动驾驶
深入解析深度学习中的卷积神经网络(CNN)
深入解析深度学习中的卷积神经网络(CNN)
21 0
|
10天前
|
机器学习/深度学习 人工智能 TensorFlow
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【10月更文挑战第32天】本文将介绍深度学习中的一个重要分支——卷积神经网络(CNN),以及其在图像识别领域的应用。我们将通过一个简单的代码示例,展示如何使用Python和TensorFlow库构建一个基本的CNN模型,并对其进行训练和测试。
|
16天前
|
机器学习/深度学习 自然语言处理 TensorFlow
深度学习中的卷积神经网络(CNN)及其应用
【10月更文挑战第26天】在这篇文章中,我们将深入探讨卷积神经网络(CNN)的基本原理、结构和应用。CNN是深度学习领域的一个重要分支,广泛应用于图像识别、语音处理等领域。我们将通过代码示例和实际应用案例,帮助读者更好地理解CNN的概念和应用。
|
18天前
|
机器学习/深度学习 算法 计算机视觉
深度学习与生活:如何利用卷积神经网络识别日常物品
【10月更文挑战第24天】在这篇文章中,我们将探索深度学习如何从理论走向实践,特别是卷积神经网络(CNN)在图像识别中的应用。通过一个简单的示例,我们将了解如何使用CNN来识别日常生活中的物体,如水果和家具。这不仅是对深度学习概念的一次直观体验,也是对技术如何融入日常生活的一次深刻反思。文章将引导读者思考技术背后的哲理,以及它如何影响我们的生活和思维方式。

热门文章

最新文章