手撸Lenet-5留念

import cv2
from numpy import *
import numpy as np
import math

np.set_printoptions(suppress=True)

img0 = cv2.resize(cv2.imread("D:\DDDD.png", cv2.IMREAD_GRAYSCALE), (32, 32), interpolation=cv2.INTER_CUBIC)
for i in range(32):
    for j in range(32):
        img0[i][j] = (255 - img0[i][j]) / 255
print(img0)
HE0 = np.random.random((6, 5, 5))
he1 = HE0[0]
he2 = HE0[1]
he3 = HE0[2]
he4 = HE0[3]
he5 = HE0[4]
he6 = HE0[5]

(h1, z1) = img0.shape

cx = [[]]
bias_0 = 1
bias_1 = 1
bias_2 = 1
bias_3 = 1
w = 1 / 10000
b = -10
ww = 1 / 1000
bb = 20


def Conv_1(bei_H, bei_Z, he_L, x, y):
    conv = [[] for i in range(28)]
    cL = 0
    for i in range(bei_H - he_L + 1):
        for j in range(bei_Z - he_L + 1):
            for k in range(he_L):
                for l in range(he_L):
                    cL = cL + x[k][l] * y[i + k][j + l]
            cL = cL + bias_0
            conv[i].append(cL)
            cL = 0
    return conv


def Conv_3(bei_H, bei_Z, he_L, x, y):
    conv = [[] for iiii in range(10)]
    cL = 0
    for i in range(bei_H - he_L + 1):
        for j in range(bei_Z - he_L + 1):
            for k in range(he_L):
                for l in range(he_L):
                    cL = cL + x[k][l] * y[i + k][j + l]
            cL = cL + bias_1
            conv[i].append(cL)
            cL = 0
    return conv


def Conv_5(bei_H, bei_Z, he_L, x, y):
    conv = [[]]
    cL = 0
    for i in range(bei_H - he_L + 1):
        for j in range(bei_Z - he_L + 1):
            for k in range(he_L):
                for l in range(he_L):
                    cL = cL + x[k][l] * y[i + k][j + l]
            cL = cL + bias_2
            conv[i].append(cL)
            cL = 0
    return conv


def Conv_6(x, y):
    conv = []
    cL = 0
    cL = x * y
    cL = cL + bias_3
    cL = sigmoid(cL)
    conv.append(cL)
    cL = 0
    return conv


def sigmoid(x):
    return 1.0 / (1.0 + np.exp(-x))


def Pool(bei_H, bei_Z, img_pool):
    Pool = [[] for i in range(14)]
    cL = 0
    for ii in range(0, bei_H, 2):
        for jj in range(0, bei_Z, 2):
            for kk in range(2):
                for ll in range(2):
                    cL = cL + img_pool[0][ii + kk][jj + ll]
            cL = cL * w + b
            cL = sigmoid(cL)
            Pool[int(ii / 2)].append(cL)
            cL = 0
    return Pool


def Pool_4(bei_H, bei_Z, img_pool):
    Pool = [[] for i in range(5)]
    cL = 0
    for ii in range(0, bei_H, 2):
        for jj in range(0, bei_Z, 2):
            for kk in range(2):
                for ll in range(2):
                    cL = cL + img_pool[0][ii + kk][jj + ll]
            cL = cL * ww + bb
            cL = sigmoid(cL)
            Pool[int(ii / 2)].append(cL)
            cL = 0
    return Pool


def CLL_1():
    C11 = Conv_1(h1, z1, len(he1), he1, img0)
    C12 = Conv_1(h1, z1, len(he2), he2, img0)
    C13 = Conv_1(h1, z1, len(he3), he3, img0)
    C14 = Conv_1(h1, z1, len(he4), he4, img0)
    C15 = Conv_1(h1, z1, len(he5), he5, img0)
    C16 = Conv_1(h1, z1, len(he6), he6, img0)
    woo = np.array([C11, C12, C13, C14, C15, C16])
    return woo


C1_conv = CLL_1()


def CLL_2():
    Pool_Conv = [[] for j in range(6)]
    (h_w, h_p, h_z) = C1_conv.shape
    for i in range(6):
        Pool_Conv[i] = Pool(h_p, h_z, C1_conv)
    return Pool_Conv


C2_conv = CLL_2()

HE2 = np.random.random((16, 5, 5))

h = 14
z = 14


def CLL_3():
    C20 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C21 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C22 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C23 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C24 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C25 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C26 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C27 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C28 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C29 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C210 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C211 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C212 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C213 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C214 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]
    C215 = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for iiii in range(10)]

    for i in range(10):
        for j in range(10):
            C20[i][j] = (Conv_3(h, z, len(HE2[0]), HE2[0], C2_conv[0]))[i][j] + \
                        (Conv_3(h, z, len(HE2[0]), HE2[0], C2_conv[1]))[i][j] + \
                        (Conv_3(h, z, len(HE2[0]), HE2[0], C2_conv[2]))[i][j]
            C21[i][j] = (Conv_3(h, z, len(HE2[1]), HE2[1], C2_conv[1]))[i][j] + \
                        (Conv_3(h, z, len(HE2[1]), HE2[1], C2_conv[2]))[i][j] + \
                        (Conv_3(h, z, len(HE2[1]), HE2[1], C2_conv[3]))[i][j]
            C22[i][j] = (Conv_3(h, z, len(HE2[2]), HE2[2], C2_conv[2]))[i][j] + \
                        (Conv_3(h, z, len(HE2[2]), HE2[2], C2_conv[3]))[i][j] + \
                        (Conv_3(h, z, len(HE2[2]), HE2[2], C2_conv[4]))[i][j]
            C23[i][j] = (Conv_3(h, z, len(HE2[3]), HE2[3], C2_conv[3]))[i][j] + \
                        (Conv_3(h, z, len(HE2[3]), HE2[3], C2_conv[4]))[i][j] + \
                        (Conv_3(h, z, len(HE2[3]), HE2[3], C2_conv[5]))[i][j]
            C24[i][j] = (Conv_3(h, z, len(HE2[4]), HE2[4], C2_conv[4]))[i][j] + \
                        (Conv_3(h, z, len(HE2[4]), HE2[4], C2_conv[5]))[i][j] + \
                        (Conv_3(h, z, len(HE2[4]), HE2[4], C2_conv[0]))[i][j]
            C25[i][j] = (Conv_3(h, z, len(HE2[5]), HE2[5], C2_conv[5]))[i][j] + \
                        (Conv_3(h, z, len(HE2[5]), HE2[5], C2_conv[0]))[i][j] + \
                        (Conv_3(h, z, len(HE2[5]), HE2[5], C2_conv[1]))[i][j]
            C26[i][j] = (Conv_3(h, z, len(HE2[6]), HE2[6], C2_conv[0]))[i][j] + \
                        (Conv_3(h, z, len(HE2[6]), HE2[6], C2_conv[1]))[i][j] + \
                        (Conv_3(h, z, len(HE2[6]), HE2[6], C2_conv[2]))[i][j] + \
                        (Conv_3(h, z, len(HE2[6]), HE2[6], C2_conv[3]))[i][j]
            C27[i][j] = (Conv_3(h, z, len(HE2[7]), HE2[7], C2_conv[1]))[i][j] + \
                        (Conv_3(h, z, len(HE2[7]), HE2[7], C2_conv[2]))[i][j] + \
                        (Conv_3(h, z, len(HE2[7]), HE2[7], C2_conv[3]))[i][j] + \
                        (Conv_3(h, z, len(HE2[7]), HE2[7], C2_conv[4]))[i][j]
            C28[i][j] = (Conv_3(h, z, len(HE2[8]), HE2[8], C2_conv[2]))[i][j] + \
                        (Conv_3(h, z, len(HE2[8]), HE2[8], C2_conv[3]))[i][j] + \
                        (Conv_3(h, z, len(HE2[8]), HE2[8], C2_conv[4]))[i][j] + \
                        (Conv_3(h, z, len(HE2[8]), HE2[8], C2_conv[5]))[i][j]
            C29[i][j] = (Conv_3(h, z, len(HE2[9]), HE2[9], C2_conv[3]))[i][j] + \
                        (Conv_3(h, z, len(HE2[9]), HE2[9], C2_conv[4]))[i][j] + \
                        (Conv_3(h, z, len(HE2[9]), HE2[9], C2_conv[5]))[i][j] + \
                        (Conv_3(h, z, len(HE2[9]), HE2[9], C2_conv[0]))[i][j]
            C210[i][j] = (Conv_3(h, z, len(HE2[10]), HE2[10], C2_conv[4]))[i][j] + \
                         (Conv_3(h, z, len(HE2[10]), HE2[10], C2_conv[5]))[i][j] + \
                         (Conv_3(h, z, len(HE2[10]), HE2[10], C2_conv[0]))[i][j] + \
                         (Conv_3(h, z, len(HE2[10]), HE2[10], C2_conv[1]))[i][j]
            C211[i][j] = (Conv_3(h, z, len(HE2[11]), HE2[11], C2_conv[5]))[i][j] + \
                         (Conv_3(h, z, len(HE2[11]), HE2[11], C2_conv[0]))[i][j] + \
                         (Conv_3(h, z, len(HE2[11]), HE2[11], C2_conv[1]))[i][j] + \
                         (Conv_3(h, z, len(HE2[11]), HE2[11], C2_conv[2]))[i][j]
            C212[i][j] = (Conv_3(h, z, len(HE2[12]), HE2[12], C2_conv[0]))[i][j] + \
                         (Conv_3(h, z, len(HE2[12]), HE2[12], C2_conv[1]))[i][j] + \
                         (Conv_3(h, z, len(HE2[12]), HE2[12], C2_conv[3]))[i][j] + \
                         (Conv_3(h, z, len(HE2[12]), HE2[12], C2_conv[4]))[i][j]
            C213[i][j] = (Conv_3(h, z, len(HE2[13]), HE2[13], C2_conv[1]))[i][j] + \
                         (Conv_3(h, z, len(HE2[13]), HE2[13], C2_conv[2]))[i][j] + \
                         (Conv_3(h, z, len(HE2[13]), HE2[13], C2_conv[4]))[i][j] + \
                         (Conv_3(h, z, len(HE2[13]), HE2[13], C2_conv[5]))[i][j]
            C214[i][j] = (Conv_3(h, z, len(HE2[14]), HE2[14], C2_conv[0]))[i][j] + \
                         (Conv_3(h, z, len(HE2[14]), HE2[14], C2_conv[2]))[i][j] + \
                         (Conv_3(h, z, len(HE2[14]), HE2[14], C2_conv[3]))[i][j] + \
                         (Conv_3(h, z, len(HE2[14]), HE2[14], C2_conv[5]))[i][j]
            C215[i][j] = (Conv_3(h, z, len(HE2[15]), HE2[15], C2_conv[0]))[i][j] + \
                         (Conv_3(h, z, len(HE2[15]), HE2[15], C2_conv[1]))[i][j] + \
                         (Conv_3(h, z, len(HE2[15]), HE2[15], C2_conv[2]))[i][j] + \
                         (Conv_3(h, z, len(HE2[15]), HE2[15], C2_conv[3]))[i][j] + \
                         (Conv_3(h, z, len(HE2[15]), HE2[15], C2_conv[4]))[i][j] + \
                         (Conv_3(h, z, len(HE2[15]), HE2[15], C2_conv[5]))[i][j]
    oo = np.array([C20, C21, C22, C23, C24, C25, C26, C27, C28, C29, C210, C211, C212, C213, C214, C215])
    return oo


C3hh = CLL_3()


def CLL_4():
    Poo2_Conv = [[] for j in range(16)]
    (h_ww, h_pp, h_zz) = C3hh.shape
    for i in range(16):
        Poo2_Conv[i] = Pool_4(h_pp, h_zz, C3hh)
    return Poo2_Conv


C4hh = CLL_4()

HE3 = np.random.random((120, 5, 5))

hh = 5
zz = 5


def CLL_5():
    C = []
    b = 0
    for f in range(120):
        C.append([0])
        for i in range(1):
            for j in range(1):
                for k in range(16):
                    C[f] = (Conv_5(hh, zz, len(HE3[f]), HE3[f], C4hh[k]))[i][j]
                    b = C[f] + b
        C[f] = b
        b = 0
    ooo = np.array(
        [C[0], C[1], C[2], C[3], C[4], C[5], C[6], C[7], C[8], C[9], C[10], C[11], C[12], C[13], C[14], C[15], C[16],
         C[17], C[18], C[19], C[20], C[21], C[22], C[23], C[24], C[25], C[26], C[27], C[28], C[29], C[30], C[31], C[32],
         C[33], C[34], C[35], C[36], C[37], C[38], C[39], C[40], C[41], C[42], C[43], C[44], C[45], C[46], C[47],
         C[48], C[49], C[50], C[51], C[52], C[53], C[54], C[55], C[56], C[57], C[58], C[59], C[60], C[61], C[62], C[63],
         C[64], C[65], C[66], C[67], C[68], C[69], C[70], C[71], C[72], C[73], C[74], C[75], C[76], C[77], C[78], C[79],
         C[80], C[81], C[82], C[83], C[84], C[85], C[86], C[87], C[88], C[89], C[90], C[91], C[92], C[93], C[94], C[95],
         C[96], C[97], C[98], C[99], C[100], C[101], C[102], C[103], C[104], C[105], C[106], C[107], C[108], C[109],
         C[110], C[111], C[112], C[113], C[114], C[115], C[116], C[117], C[118], C[119]])
    return (ooo)


C5hh = CLL_5()

hhh = 1
zzz = 1
HE4 = np.random.random((84, 1, 1))


def CLL_6():
    C = [[]]
    a = 0
    for f in range(84):
        C.append([0])
        for i in range(1):
            for j in range(1):
                for k in range(120):
                    kkk = np.random.rand()
                    C[f] = (Conv_6(HE4[f], C5hh[k]))[i][j]
                    a = kkk * C[f] + a
        C[f] = a
        a = 0
    oooo = np.array(
        [C[0], C[1], C[2], C[3], C[4], C[5], C[6], C[7], C[8], C[9], C[10], C[11], C[12], C[13], C[14], C[15], C[16],
         C[17], C[18], C[19], C[20], C[21], C[22], C[23], C[24], C[25], C[26], C[27], C[28], C[29], C[30], C[31], C[32],
         C[33], C[34], C[35], C[36], C[37], C[38], C[39], C[40], C[41], C[42], C[43], C[44], C[45], C[46], C[47],
         C[48], C[49], C[50], C[51], C[52], C[53], C[54], C[55], C[56], C[57], C[58], C[59], C[60], C[61], C[62], C[63],
         C[64], C[65], C[66], C[67], C[68], C[69], C[70], C[71], C[72], C[73], C[74], C[75], C[76], C[77], C[78], C[79],
         C[80], C[81], C[82], C[83]])
    return (oooo)


C6hh = CLL_6()

HE5 = np.random.random((10, 1, 1))


def OutPut():
    C = [[]]
    a = 0
    for f in range(10):
        C.append([0])
        for i in range(1):
            for j in range(1):
                for k in range(84):
                    C[f] = (Conv_6(HE5[f], C6hh[k]))[i][j]
                    kkk = np.random.rand()
                    a = kkk * C[f] + a
        C[f] = a
        a = 0
    ooooo = np.array([C[0], C[1], C[2], C[3], C[4], C[5], C[6], C[7], C[8], C[9]])
    return (ooooo)


Outppp = OutPut()
OutPPP = [[]]
for i in range(10):
    OutPPP[0].append(Outppp[i][0])
OutPPP = np.array(OutPPP)


def softmax(x):
    m, n = np.shape(x)
    outMatrix = np.mat(np.zeros((m, n)))
    soft_sum = 0
    for idx in range(0, n):
        outMatrix[0, idx] = math.exp(x[0, idx])
        soft_sum += outMatrix[0, idx]
    for idx in range(0, n):
        outMatrix[0, idx] = outMatrix[0, idx] / soft_sum
    return outMatrix


outhhh = []
outhhh.append(softmax(OutPPP))
a = np.max(outhhh)
x = np.where(outhhh == a)
print(outhhh)
print(a)
print(x)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值