人工智能-深度学习初体验

EduCoder平台:人工智能-深度学习初体验

第1关:什么是神经网络

在这里插入图片描述

第2关:反向传播

在这里插入图片描述

第3关:动手实现CNN识别手写数字

编程要求:

填写 python 代码,在 Begin-End 段中构建出如下结构的卷积神经网络:

  • 64 个 5*5 的卷积核组成的卷积层,激活函数为 relu;
  • 最大池化层,池化核大小为 2*2;
  • 扁平;
  • 128 个神经元的全连接层,激活函数为 relu;
  • 10 个神经元的全连接层,激活函数为 softmax。

测试说明:

只需按要求构建模型即可,程序内部会使用你所构建的模型进行训练与预测,当预测准确率高于 95% 时,视为过关。

代码如下:

from keras.models import Sequential
from keras.layers import Conv2D, MaxPool2D, Flatten, Dense
import numpy as np
# 设置随机种子
np.random.seed(1447)

def build_model():
    '''
    在Begin-End段中构建出如下结构的卷积神经网络
    1.64个5*5的卷积核组成的卷积层,激活函数为relu
    2.最大池化层,池化核大小为2*2
    3.扁平
    4.128个神经元的全连接层,激活函数为relu
    5.10个神经元的全连接层,激活函数为softmax
    :return: 构建好的模型
    '''
    model = Sequential()
    model.add(Conv2D(32, (5, 5), activation='relu', input_shape=[28, 28, 1]))
    #********* Begin *********#
    model.add(Conv2D(64, kernel_size=5, activation='relu'))
    model.add(MaxPool2D(pool_size=(2,2)))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dense(10, activation='softmax'))
    #********* End *********#
    return model
    

第4关:动手实现RNN分析影评情感

编程要求:

填写 python 代码,在 Begin-End 段中构建出如下结构的循环神经网络:

  • 有 30 个神经元的 SimpleRNN 层;
  • 有 16 个神经元的全连接层,激活函数为 relu;
  • 有 1 个神经元的全连接层,激活函数为 sigmoid。

测试说明:

只需按要求构建模型即可,程序内部会使用你所构建的模型进行训练与预测,当预测准确率高于 70% 时,视为过关。

代码如下:


from keras.models import Sequential
from keras.layers import Embedding, SimpleRNN, Dense

def build_model():
    '''
    在Begin-End段中构建如下结构的循环神经网络
    1.有30个神经元的SimpleRNN层
    2.有16个神经元的全连接层,激活函数为relu
    3.有1个神经元的全连接层,激活函数为sigmoid
    :return: 构建好的模型
    '''
    model = Sequential()
    model.add(Embedding(1000, 64))
    #********* Begin *********#
    model.add(SimpleRNN(30))
    model.add(Dense(units=16, activation='relu'))
    
    model.add(Dense(units=1, activation='sigmoid'))
    #********* End *********#
    return model

第5关:动手实现猫狗大战

编程要求:

在 Begin-End 段中填写 Python 代码,实现猫狗分类。

测试说明:

补全代码即可,程序内部会使用你所构建的模型进行训练与预测,当预测准确率高于 70% 时,视为过关。

代码如下:


from keras.layers import Dense, Activation, Flatten, Dropout, Conv2D, MaxPooling2D
import keras
import os
import numpy as np
import cv2
# 设置随机种子
np.random.seed(1447)
IMAGE_HEIGHT = 128
IMAGE_WIDTH = 128
def get_train_data(data_path):
    '''
    读取并处理数据
    :return:处理好的图像和对应的one-hot编码
    '''
    images = []
    onehot = np.zeros((500, 2))
    #********* Begin *********#
    for i, img_name in enumerate(os.listdir(data_path)):
        if 'cat' in img_name:
            onehot[i, 0] = 1
        else:
            onehot[i, 1] = 1
        img = cv2.imread(os.path.join(data_path, img_name))
        img = cv2.resize(img, (IMAGE_HEIGHT, IMAGE_WIDTH))
        img = img / 255.0
        images.append(img)
    #********* End *********#
    return np.array(images), onehot
def build_model():
    '''
    构建模型
    :return:构建好的模型
    '''
    model = keras.Sequential()
    #********* Begin *********#
    model.add(Conv2D(32, kernel_size=3, activation='relu', input_shape=[IMAGE_HEIGHT, IMAGE_WIDTH, 3]))
    model.add(MaxPooling2D(pool_size=2))
    model.add(Conv2D(32, kernel_size=3, activation='relu'))
    model.add(MaxPooling2D(pool_size=2))
    model.add(Flatten())
    model.add(Dense(96, activation='relu'))
    model.add(Dense(2, activation='softmax'))
    #********* End *********#
    return model
def fit_and_predict(model, train_images, onehot, test_images):
    '''
    训练模型,并对测试图像进行预测
    :param model: 训练好的模型
    :param train_images: 训练集图像
    :param onehot: 训练集的one-hot编码
    :param test_images: 测试集图像
    :return: 预测结果
    '''
    #********* Begin *********#
    # 编译模型
    model.compile(loss='categorical_crossentropy', optimizer=keras.optimizers.Adam(lr=0.0001), metrics=['accuracy'])
    #********* End *********#
    model.fit(train_images, onehot, epochs=20, batch_size=32, verbose=0)
    result = model.predict(test_images, batch_size=10)
    predict_idx = np.argmax(result, axis=1)
    return predict_idx


  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
### 回答1: B'educoder机器学习KNN算法'是指在机器学习中,使用KNN(K-最近邻)算法进行数据分类或回归的过程。它通过计算每个样本点与其最近的k个邻居之间的距离来分类或回归。该算法常用于给定一些已经被分类或回归的数据,以对新的、未知的数据进行分类或回归。 ### 回答2: KNN算法是机器学习中最常见的分类算法之一,属于无参数的非线性算法,也是解决分类问题的一种最简单有效的算法之一。KNN全称为K-Nearest Neighbor算法,它的主要思想是如果一个样本在特征空间中的k个最相似(即特征空间中最近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。 KNN算法的主要流程是先将数据集中所有实例按照特征向量之间的距离从小到大进行排序,然后选取相邻的K个样本,根据它们属于的类别计算出该样本的类别,即选取K个样本中出现最多的类别作为该样本的预测类别。通常情况下,K的选择是非常重要的,如果K太小会使得预测错误率变高,而K太大会使得不同的样本预测出的类别相同,从而无法实现分类。 KNN算法的应用非常广泛,包括文本分类、图像识别、推荐系统等领域。由于该算法的思路简单易懂且计算量相对较小,因此它在大数据时代依然被广泛应用。同时,在KNN算法的基础上也有很多改进算法被提出,如KD树、球树等,它们可以有效地提高KNN算法的运行效率和准确率。 在educoder机器学习的学习中,我们可以利用Python语言的scikit-learn库实现KNN算法。该库提供了KNeighborsClassifier类,它可以根据给定的数据集和K值训练KNN分类器,并用来预测新的样本。在使用scikit-learn库进行分类问题解决时,通常需要将数据进行归一化处理,以避免特征之间的差异对结果的影响。同时,还需要采用交叉验证等方法优化模型的参数和选择最优的K值,从而提高KNN算法的准确率和泛化能力。 总的来说,KNN算法是机器学习中一种简单有效的分类算法,它的应用非常广泛。在educoder机器学习的学习中,我们可以通过掌握KNN算法的基本原理和应用方法,来更好地应用这种算法解决实际的分类问题。 ### 回答3: KNN(K-Nearest Neighbor)算法是一种基本的分类和回归算法,经常被用于机器学习中。其基本思想是预测未知的样本所属类别或预测目标值,通过已知的样本集来找到与未知样本最近的K个样本(即K个最近邻)来进行预测。KNN算法的核心是距离度量和K值的选择。 在KNN算法的训练过程中,首先需要将所有样本的特征向量保存在内存里。对于一个未知的样本,计算其与内存中所有样本的距离,并选出离该样本最近的K个样本。可以使用欧式距离或曼哈顿距离来度量距离。在分类问题中,K个邻居样本中占比最大的那个类别即为预测结果;在回归问题中,K个邻居的目标值的平均值或加权平均值即为预测结果。 KNN算法的优点是简单有效,不需要训练过程,可以自适应地进行分类或回归。但也存在缺点,如不善处理多分类问题和高维数据,受样本分布的影响较大等。在实际应用中,可以采用交叉验证和特征选择等手段来解决一些问题。 在educoder机器学习的KNN算法教学中,可以学习到该算法的具体实现和应用,如如何选择距离度量、K值的选择和分类与回归问题的应用。同时也可以通过练习和作业来加深对算法的理解和掌握。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Pretend ^^

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

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

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

打赏作者

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

抵扣说明:

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

余额充值