python实现简单的神经网络

写在前面:

我一直是一个非常懒散的人,没有计划,得过且过,所以导致学很多东西都非常浅显,当然我本来也不是一个很深刻的人。说来惭愧,title是算法工程师却一直不懂深度学习,这一直是我心中的痛,想最近抽空学习深度学习。作为最近的大热,深度学习的入门门槛非常低,因为现在的框架已经做得非常完整了,而且很多开源代码下下来跑跑数据就可以说我跑过模型了,但是我一直对深度学习的内部机理感到迷茫,所以这个领域对我来说像是一个刚炖熟没有切开的猪脚,无从下手。也跟着视频看了几集,总是觉得没有参透,但又不知道是哪里的问题。所以我有个大胆的想法,我希望用一些非常基础的库去实现一些深度学习中常见的算法和网络,这可能是一个系列,也可能只有这一篇。

正文:

本文主要针对前后向传播算法,实现了一个3层的全连接网络,代码我放在了github上。

本文的神经网络结构如下图所示:

网络共有3层,输入层,隐藏层和输出层,每两层之间的节点是全连接的,输入层和隐藏层之间的各个连接的权重由矩阵wi表示,隐藏层和输出层之间的权重关系由wo表示,激活函数

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RBF(Radial Basis Function)神经网络是一种基于径向基函数的神经网络模型。它由输入层、隐藏层和输出层组成,其中隐藏层的神经元使用径向基函数作为激活函数。 Python实现RBF神经网络可以使用第三方库,如scikit-learn。以下是一个简单的示例代码: ```python from sklearn.cluster import KMeans from sklearn.metrics.pairwise import euclidean_distances from sklearn.preprocessing import OneHotEncoder from sklearn.linear_model import Ridge class RBFNet: def __init__(self, n_centers, gamma=1.0): self.n_centers = n_centers self.gamma = gamma self.centers = None self.weights = None self.encoder = OneHotEncoder(sparse=False) def _calculate_centers(self, X): kmeans = KMeans(n_clusters=self.n_centers) kmeans.fit(X) self.centers = kmeans.cluster_centers_ def _calculate_activations(self, X): distances = euclidean_distances(X, self.centers) activations = np.exp(-self.gamma * (distances ** 2)) return activations def fit(self, X, y): self._calculate_centers(X) activations = self._calculate_activations(X) self.encoder.fit(y.reshape(-1, 1)) encoded_y = self.encoder.transform(y.reshape(-1, 1)) ridge = Ridge(alpha=0.01) ridge.fit(activations, encoded_y) self.weights = ridge.coef_ def predict(self, X): activations = self._calculate_activations(X) predicted_y = self.encoder.inverse_transform(np.dot(activations, self.weights.T)) return predicted_y ``` 使用该代码,你可以通过以下步骤来实现RBF神经网络: 1. 创建一个RBFNet对象,指定隐藏层神经元的数量(n_centers)和径向基函数的参数(gamma)。 2. 使用fit方法来训练模型,传入训练数据X和对应的目标值y。 3. 使用predict方法来进行预测,传入测试数据X,返回预测结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值