【机器学习】神经网络

Neural Networks

神经网络:一种计算模型,由大量的节点(或神经元)直接相互关联而构成。每个节点(除输入节点外)代表一种特定的输出函数(或者认为是运算),称为激励函数;每两个节点的连接都代表该信号在传输中所占的比重(即认为该信号对该节点的影响程度)

神经网络三要素:模型、策略、算法

概述

神经网络三层:

  • 输入层:数据
  • 隐藏层:模型
  • 输出层:策略【reLU, sigmoid, tanh, softmax】

感知机

线性分类模型

f(x)=sign(wx+b)

其中

sign(X)={+1,x01,x<0

BP算法

神经网络的三要素之算法——反向传播(关键是梯度下降)

activation

linear activation

f(x)=wx+b

Sigmoid activation

fw,b(x(i))=g(wx(i)+b)

g(x)=sigmoid(x)

ReLU Activation

a=max(0,z)

build the network layer

使用Numpy

代码

# 建立单层神经网络
def my_dense(a_in, W, b, g):
    """
    Computes dense layer
    Args:
      a_in (ndarray (n, )) : Data, 1 example 
      W    (ndarray (n,j)) : Weight matrix, n features per unit, j units
      b    (ndarray (j, )) : bias vector, j units  
      g    activation function (e.g. sigmoid, relu..)
    Returns
      a_out (ndarray (j,))  : j units|
    """
    units = W.shape[1]
    a_out = np.zeros(units)
    for j in range(units):               
        w = W[:,j]                                    
        z = np.dot(w, a_in) + b[j]         
        a_out[j] = g(z)               
    return(a_out)
# 建立两层神经网络
def my_sequential(x, W1, b1, W2, b2):
    a1 = my_dense(x,  W1, b1, sigmoid)
    a2 = my_dense(a1, W2, b2, sigmoid)
    return(a2)
# 预测
def my_predict(X, W1, b1, W2, b2):
    m = X.shape[0]
    p = np.zeros((m,1))
    for i in range(m):
        p[i,0] = my_sequential(X[i], W1, b1, W2, b2)
    return(p)

Multi-class Classification

preferred_model = Sequential(
    [
        # kernel_regularizer 正则化
        Dense(120, activation = 'relu', kernel_regularizer=tf.keras.regularizers.l2(0.1), name="L1"), 
        Dense(40, activation = 'relu', kernel_regularizer=tf.keras.regularizers.l2(0.1), name="L2"),         Dense(classes, activation = 'linear', name="L3")  
    ], name="ComplexRegularized"
)
preferred_model.compile(
    loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),  #<-- Note
    optimizer=tf.keras.optimizers.Adam(learning_rate=1e-3), # 优化Alpha
)

preferred_model.fit(
    X_train,y_train,
    epochs=10
)
posted @   码农要战斗  阅读(295)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示