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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一章 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_f
### 关于机器学习课程设计项目的案例资源 #### 项目灵感 1. **糖尿病风险预警分析系统** 基于引用中的描述[^3],可以构建一个基于逻辑回归的二分类模型,用于预测个体患糖尿病的风险。此项目不仅涉及数据预处理、特征工程,还可以扩展到其他健康领域的问题建模。 2. **淡水质量预测系统** 参考引用内容[^4],该项目旨在通过对水质数据进行探索、清洗和建模,最终实现对淡水质量的有效预测。此类项目可进一步应用于环境保护和水资源管理的实际场景中。 3. **推荐系统开发** 构建一个基于协同过滤或矩阵分解的推荐系统,适用于电影、音乐或其他商品推荐。这类项目可以帮助学生深入理解监督学习和无监督学习的应用差异。 4. **情感分析工具** 使用自然语言处理技术和文本分类方法,创建一个能够自动判断评论情绪(正面/负面)的情感分析工具。这是机器学习在实际业务中常见的应用场景之一。 5. **手写数字识别器** 利用MNIST数据集训练卷积神经网络(CNN),完成对手写字体图像的自动化识别任务。这是一个经典入门深度学习实验,适合初学者掌握基本概念和技术栈。 6. **股票价格走势预测** 结合时间序列分析方法时序预测算法(如LSTM),尝试对未来某段时间内的股价变动情况进行估计。需要注意的是,金融市场的随机性强,因此该类研究更多作为学术探讨而非投资建议. 7. **客户流失率预测模型** 面向电信行业或者电商网站等领域,通过挖掘历史行为记录来提前发现潜在离开平台用户的倾向并采取挽留策略。这种类型的商业智能(BI)解决方案非常受企业欢迎。 #### 推荐资源 - 吴恩达教授开设于Coursera上的《Machine Learning》在线课程提供了全面而系统的理论基础以及丰富的实战经验分享[^1],非常适合希望打牢根基的学习者. - 对于想要快速上手机器学习编程技巧的人群来说,"AI小白开发者必备..."这篇文章列举了一系列专注于不同技能提升方向的具体教程链接[^2]. - Kaggle竞赛平台上拥有众多公开可用的数据集合挑战赛项,它们覆盖了从初级到高级难度范围广泛的题目类型,是锻炼实操能力的好去处. ```python import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score # 加载示例数据 (假设为CSV文件) data = pd.read_csv('example_dataset.csv') # 数据分割 X_train, X_test, y_train, y_test = train_test_split(data.drop(columns=['target']), data['target'], test_size=0.2) # 初始化逻辑回归模型 model = LogisticRegression() # 训练过程 model.fit(X_train, y_train) # 测试效果评估 predictions = model.predict(X_test) print(f'Accuracy: {accuracy_score(y_test, predictions)}') ``` 以上代码片段展示了如何使用Scikit-Learn库搭建简易版逻辑回归分类器的过程.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值