深度学习入门 基于python的理论与实现(小白学习记录)

这篇博客记录了一位小白从Python入门到深入学习深度学习的过程,涵盖了Python版本确认、NumPy的广播功能、逻辑电路的感知机实现、神经网络的构建,以及神经网络学习中的损失函数(均方误差和交叉熵)和误差反向传播法的介绍与代码实现。
摘要由CSDN通过智能技术生成

第一章 python入门

1.检查python版本:打开终端(搜索框输入cmd),输入如下代码:

python --version

 如图可见,本人python版本为3.11.2

2.python NumPy的广播功能(broadcast),可以使不同形状的数组之间进行运算。

3.第一节部分复现代码如下:

import numpy as np      # 将numpy作为np导入
import matplotlib.pyplot as plt

# x = np.array([1.0,2.0,3.0])     # np.array()方法接收列表作为参数,生成NumPy数组(numpy.ndarray)
# print(x)
# print(type(x))
# y = np.array([2.0,4.0,6.0])
# print(x + y)
# print(x - y)
# print(x * y)
# print(x / 2)

A = np.array([[1,2],[3,4]])
# print(A)
# print(A.shape)      # 查看矩阵形状
# print(A.dtype)      # 查看矩阵元素数据类型

B = np.array([[3,0],[6,0]])
# print(A + B)
# print(A * B)
# print(A * 10)
# print(A[0])     # 索引,第0行
# print(A[0,1])     # 索引,第0,1个元素
# for row in A:
#     print(row)
X = np.array([[51,55],[14,19],[0,4]])
X = X.flatten()
# print(X)

# print(X[np.array([0,2,4])])     # X[np.array([0,2,4])]返回一个新的一维数组,包含X数组中第0、2和4个元素的值
# print(X > 15)
# print(X[X > 15])

# x = np.arange(0,6,0.1)  # 以0.1为单位,生成0到6的数据
# y = np.sin(x)
# plt.plot(x,y)       # 绘制图形
# plt.show()       # 显示图形

# x = np.arange(0,6,0.1)
# y1 = np.sin(x)
# y2 = np.cos(x)
# plt.plot(x,y1,label="sin")
# plt.plot(x,y2,linestyle = "--",label="cos")
# plt.xlabel("x")
# plt.ylabel("y")
# plt.title('sin&cos')
# plt.legend()
# plt.show()

# from matplotlib.image import imread
# img = imread("文件路径")
# plt.imshow(img)     # imshow()函数用于显示图像
# plt.show()          # show()函数用于显示图像窗口

第二章 简单逻辑电路

1.感知机:接收多个输入信号,输出一个信号。

2.与门:两个输入均为1时输出为1,其他时候输出0

3.与非门:颠倒与门的输出,两个输入均为1时输出为0,其他时候输出1

4.或门:只要由一个信号输入1,输出就是1

5.感知机无法直接实现异或门,组合感知机可以实现异或门,代码如下:

import numpy as np


def AND(x1,x2):     # 与门
    x = np.array([x1,x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

def NAND(x1,x2):       # 与非门
    w1,w2,theta = -0.5,-0.5,-0.7
    tmp = x1*w1 + x2*w2
    if tmp < theta:
        return 0
    elif tmp >= theta:
        return 1

def OR(x1,x2):      # 或门
    x = np.array([x1,x2])
    w = np.array([0.5,0.5])
    b = -0.2
    tmp = np.sum(x*w) + b
    if tmp <= 0:
        return 0
    else:
        return 1

def XOR(x1,x2):
    s1 = NAND(x1,x2)
    s2 = OR(x1,x2)
    y = AND(s1,s2)
    print(y)
XOR(0,0)
XOR(1,0)
XOR(0,1)
XOR(1,1)

第三章 神经网络

1.阶跃函数的实现代码及图形代码如下:

# 阶跃函数实现中用到的Numpy的技巧
# x = np.array([-1.0,1.0,2.0])
# print(x)
# y = x > 0       # x大于0,输出True
# print(y)
# # .astype方法转换Numpy数组的类型,通过参数指定期望的类型
# y = y.astype(int)       # np.int被弃用
# print(y)

def step_function(x):
    print(x)
    y = x > 0
    print(y)
    print(type(y))
    y = y.astype(int)       # 使用.astype方法,输入需要使用数组,否则会报错
    return y
print(step_function(n
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值