普通网友 2025-12-09 17:16 采纳率: 0%
浏览 2

机器学习 深度学习 中 有个关于权重的问题

简单例子;我们做个猫狗分类,有猫狗训练图片 。只分两类 。 我们是不是应该要做以下大概步骤 .

1,图片 换算矩阵 rgb三通道 换算 做出 换维度的新的材料。
2,卷积 ,池化, 用各个神经元上的权重参数 w1 w2。。 wx 去和提取的特征做乘法 然后 在相加 在加上 偏执值 b 。最后输出 2个结果 都为0-1直接的 小数 对应猫的参数的结果 越接近1那么也就是说 猫的概率越大 比如 0.6是猫 0.4是狗 。
3,由于 0.6 还不够接近1 所以我们 用误差 来反向传播进网络 ,并且反复 反正传播 最终 损失值loss 越来越小。使得w1 w2 。wx 更科学 。

以上 是我对 图片识别分类任务流程的 基本认识 如果不对请指正。

下面问题来了:
问 ,
w1 w2.。wx 和 偏执b 这些就是我们从第一张图片经过有监督学习 反复反向传播 得到的权重值。 可是我们有了这些权重后又该做些什么。

那么我们如果 把第二张 图片 用上述的 卷积 池化等等步骤 处理 ,然后 和我们已经得到的w1 w2.。wx 以及b 做运算 也会得到 2个结果 。

那这2个结果 如果不准确 我们下一步要做什么 ?是继续做反向传播吗? 如果继续 那么我们将会得到新的w1 w2 。wx 和b 。新的到的权重值 又有什么用呢 第二次得到的这些权重值 应用到第一张图片上 还能得出 正确的结果吗。

这就是我的问题 我没有搞懂 权重 值 如何继承下来 变成我们所说的经验 也就是说 我没有搞懂 权重是 如何通过训练 得到经验

  • 写回答

3条回答 默认 最新

  • 阿里嘎多学长 2025-12-09 17:30
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    理解你的问题

    你在问关于机器学习和深度学习中,特别是猫狗分类问题的权重问题。你的问题可以总结为:

    • 你想知道在猫狗分类问题中,如何处理图片数据,特别是如何将图片转换为矩阵形式。
    • 你想知道在卷积神经网络(CNN)中,如何使用权重来进行特征提取和分类。

    你的问题的解决方案

    1. 图片转换为矩阵:你可以使用以下步骤来将图片转换为矩阵:
    • 将图片转换为RGB三通道图像。
    • 使用图像处理库(如OpenCV)将图像转换为矩阵形式。
    • 使用矩阵运算库(如NumPy)来进行矩阵运算。
    1. 卷积和池化:在CNN中,卷积层和池化层是用于提取特征的关键层。卷积层使用权重来扫描输入矩阵,池化层用于降低空间维度。
    • 卷积层使用权重来扫描输入矩阵,生成特征图。
    • 池化层使用最大池化或平均池化来降低空间维度。

    核心代码

    以下是使用Python和Keras库来实现猫狗分类问题的核心代码:

    from keras.models import Sequential
    from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
    from keras.preprocessing.image import ImageDataGenerator
    import numpy as np
    
    # 加载数据
    train_dir = 'path/to/train/directory'
    test_dir = 'path/to/test/directory'
    
    # 定义数据生成器
    train_datagen = ImageDataGenerator(rescale=1./255)
    test_datagen = ImageDataGenerator(rescale=1./255)
    
    train_generator = train_datagen.flow_from_directory(train_dir, target_size=(224, 224), batch_size=32, class_mode='binary')
    test_generator = test_datagen.flow_from_directory(test_dir, target_size=(224, 224), batch_size=32, class_mode='binary')
    
    # 定义模型
    model = Sequential()
    model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(224, 224, 3)))
    model.add(MaxPooling2D((2, 2)))
    model.add(Conv2D(64, (3, 3), activation='relu'))
    model.add(MaxPooling2D((2, 2)))
    model.add(Conv2D(128, (3, 3), activation='relu'))
    model.add(MaxPooling2D((2, 2)))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    
    # 编译模型
    model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
    
    # 训练模型
    model.fit(train_generator, epochs=10, validation_data=test_generator)
    

    注意:以上代码仅供参考,具体的实现细节可能需要根据实际情况进行调整。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月9日