神经网络认识 python

本文介绍了Python中神经网络的基础概念,包括自定义阶跃、sigmoid和ReLU函数的实现,并对比了它们的特点。通过实例展示了如何用numpy实现这些函数,并探讨了sigmoid的平滑性和ReLU的非线性特性。适合初学者了解深度学习基本构建模块。

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

# 神经网络——[图一]
# 可以自动从数据中学习到合适的权重参数
# 例子 for example
#   输入层,中间层,输出层

import numpy as np
import matplotlib.pylab as plt

# 阶跃函数 在numpy中的技巧使用
x = np.array([-1.0, 1.0, 2.0])
print(x)
y = x > 0  # 通过条件转变为布尔类型
print(y)
y = y.astype(np.int_)  # 把数组元素布尔类型 转换为 int64 类型
print(y)

# 使用 numpy技巧实现阶跃函数
def step_function_of_numpy(i):
    return np.array(i > 0, dtype=np.int_)


# 普通实现阶跃函数
def step_function(i):
    i = x > 0
    return i.astype(np.int_)


# 阶跃函数可视化 0 为界,输出从0切换到1值呈阶梯式变化,阶跃函数
# a = np.arange(-5.0, 5.0, 0.1)
# b = step_function_of_numpy(a)
# plt.plot(a, b)
# plt.ylim(-0.5, 5)
# plt.show()


# sigmoid 函数实现
def sigmoid(i):
    return 1 / (1 + np.exp(-i))

c = np.array([-1.0, 1.0, 2.0])
print(sigmoid(c))

a = np.arange(-5.0, 5.0, 0.1)
b = sigmoid(a)
plt.plot(a, b)
plt.ylim(-0.5, 5)
plt.show()

# sigmoid 函数和阶跃函数的比较 ——【共同点是都是非线性函数】【】
# sigmoid随着输入发生连续性变化(流动的数是连续的实数信号导致平滑性),而阶跃函数随着输入发生急剧性变化(输入数直接变化)

# ReLU Rectified Linear Unit 函数——输入大于0,直接输出该值,输入小于等于0,输出0
def relu(i):
    return np.maximum(0, i)     # 选择较大的值进行输出

《深度学习入门——基于python的理论实践》

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

P("Struggler") ?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值