首页 AI Studio教育版 帖子详情
作业帖 | 百度深度学习集训营
收藏
快速回复
AI Studio教育版 其他师资培训 1068026 953
作业帖 | 百度深度学习集训营
收藏
快速回复
AI Studio教育版 其他师资培训 1068026 953

百度深度学习集训营已经正式开营,每个阶段的作业都将有各自的奖励,欢迎大家学习~

PS:如遇帖子过期、审核不通过的情况,请先复制内容保存在word文档,然后根据提示,完成个人实名验证,刷新后重新粘贴复制的内容,即可提交~

欢迎大家报名参加~

1月9日作业:

作业9-1:在第二章中学习过如何设置学习率衰减,这里建议使用分段衰减的方式,衰减系数为0.1, 根据ResNet目前的训练情况,应该在训练到多少步的时候设置衰减合适?请设置好学习率衰减方式,在眼疾识别数据集iChallenge-PM上重新训练ResNet模型。

作业9-1奖励:在作业中随机各抽取5名同学送出飞桨本+数据线+飞桨贴纸

回复帖子形式:  作业9-1:XXX

抽奖作业截止时间:2020年1月13日中午12点之前

作业9-2奖励:在作业中随机各抽取5名同学送出飞桨本+数据线+飞桨贴纸

回复帖子形式:  作业9-2:XXX

抽奖作业截止时间:2020年1月13日中午12点之前

 

1月7日作业:

作业8:如果将LeNet模型中的中间层的激活函数Sigmoid换成ReLU,在眼底筛查数据集上将会得到什么样的结果?Loss是否能收敛,ReLU和Sigmoid之间的区别是引起结果不同的原因吗?请发表你的观点

作业8奖励:在作业中随机各抽取5名同学送出飞桨本+数据线+飞桨贴纸

回复帖子形式:  作业8:XXX

获奖同学:#820 thunder95、#819 你还说不想我吗、 #818 百度用户#0762194095、#817 呵赫 he、#816 星光1dl

1月2日作业

作业7-1  计算卷积中一共有多少次乘法和加法操作

输入数据形状是[10, 3, 224, 224],卷积核kh = kw = 3,输出通道数为64,步幅stride=1,填充ph = pw =1

完成这样一个卷积,一共需要做多少次乘法和加法操作?

提示:先看输出一个像素点需要做多少次乘法和加法操作,然后再计算总共需要的操作次数

提交方式:请回复乘法和加法操作的次数,例如:乘法1000,加法1000

作业7-1奖励:抽取5人赢得飞桨定制本+数据线,截止时间2020年1月6日中午12点之前

回复帖子形式:  作业7-1:XXX

作业7-2奖励:从正确答案中抽取5人获得飞桨定制本+50元京东卡,截止时间2020年1月6日中午12点之前 

 

12月31日作业

作业6-1:

1.将普通神经网络模型的每层输出打印,观察内容
2.将分类准确率的指标 用PLT库画图表示
3.通过分类准确率,判断以采用不同损失函数训练模型的效果优劣
4.作图比较:随着训练进行,模型在训练集和测试集上的Loss曲线
5.调节正则化权重,观察4的作图曲线的变化,并分析原因
作业6-1奖励:抽取5人赢得飞桨定制本+数据线 ,回复帖子形式:  作业6-1:XXX

作业6-2:

正确运行AI Studio《百度架构师手把手教深度学习》课程里面的作业3 的极简版代码,分析训练过程中可能出现的问题或值得优化的地方,通过以下几点优化:

(1)样本:数据增强的方法

(2)假设:改进网络模型

(2)损失:尝试各种Loss

(2)优化:尝试各种优化器和学习率

目标:尽可能使模型在mnist测试集上的分类准确率最高

提交实现最高分类准确率的代码和模型,我们筛选最优结果前10名进行评奖

作业6-2奖励:飞桨定制本+50元京东卡

 

12月25日作业

12月23日作业

作业4-1:在AI studio上运行作业2,用深度学习完成房价预测模型

作业4-1奖励:飞桨定制本+ 《深度学习导论与应用实践》教材,选取第2、3、23、123、223、323…名同学送出奖品

作业4-2:回复下面问题,将答案回复帖子下方:

通过Python、深度学习框架,不同方法写房价预测,Python编写的模型 和 基于飞桨编写的模型在哪些方面存在异同?例如程序结构,编写难易度,模型的预测效果,训练的耗时等等?

回复帖子形式:  作业4-2:XXX

作业4-2奖励:在12月27日(本周五)中午12点前提交的作业中,我们选出最优前五名,送出百度定制数据线+《深度学习导论与应用实践》教材


12月17日作业

完成下面两个问题,并将答案回复在帖子下面,回帖形式:作业3-1(1)XX(2)XX

作业奖励:在2019年12月20日中午12点之前提交,随机抽取5名同学进行点评,礼品是本+数据线

12月12日作业

获奖者:第12名:飞天雄者                                     

12月10日作业
作业1-1:在AI Studio平台上https://aistudio.baidu.com/aistudio/education/group/info/888 跑通房价预测案例

作业1-1奖励:最先完成作业的前3名,以及第6名、66名、166名、266名、366名、466名、566名、666名的同学均可获得飞桨定制大礼包:飞桨帽子、飞桨数据线 、飞桨定制logo笔

作业1-1的获奖者如图:

作业1-2:完成下面两个问题,并将答案发布在帖子下面
①类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?假设和参数是什么?优化目标是什么?
②为什么说AI工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?
作业1-2奖励:回复帖子且点赞top5,获得《深度学习导论与应用实践》教材+飞桨定制本

点赞Top5获奖者:1.飞天雄者  2.God_s_apple  3.177*******62   4.学痞龙   5.故乡237、qq526557820

作业截止时间2020年1月10日,再此之前完成,才有资格参加最终Mac大奖评选

 

报名流程:

1.加入QQ群:726887660,班主任会在QQ群里进行学习资料、答疑、奖品等活动

2.点此链接,加入课程报名并实践:https://aistudio.baidu.com/aistudio/course/introduce/888

温馨提示:课程的录播会在3个工作日内上传到AI studio《百度架构师手把手教深度学习》课程上

 

49
收藏
回复
全部评论(953)
时间顺序
月下蓝雨
#722 回复于2020-01

作业7-1 计算卷积中一共有多少次乘法和加法操作

原图有3通道 所以生成一个通道的卷积一次需要,27次乘法,27次加法

加法总数 27*224*224*64*10 = 867041280

乘法总数 27*224*224*64*10 = 867041280

0
回复
c
cheeryoung79
#723 回复于2020-01

作业6-1(4):

0
回复
c
cheeryoung79
#724 回复于2020-01

6-1(3)

cross_entropy

softmax_with_cross_entropy

0
回复
月下蓝雨
#725 回复于2020-01

7-2 

名称 w形状 w参数个数 b形状 b的个数 输出
conv1 [6,3,5,5] 450 [6] 6 [10,6,224,224]
pool1 [10,6,112,112]
conv2 [16,6,5,5] 2400 [16] 16 [10,16,112,112]
pool2 [10,16,56,56]
fc1 [50176,64] 3261440 [64] 64 [10,64]
fc2 [64,1] 64 [1] 1 [10,1]

 

0
回复
c
cheeryoung79
#726 回复于2020-01

6-1(5)

0.01

0.1

0
回复
宝宝会上天
#727 回复于2020-01

作业7-1:乘法次数867041280   加法次数610140160

输入数据形状是[10, 3, 224, 224],卷积核kh = kw = 3,输出通道数为64,步幅stride=1,填充ph = pw =1

完成这样一个卷积,一共需要做多少次乘法和加法操作?

提示:先看输出一个像素点需要做多少次乘法和加法操作,然后再计算总共需要的操作次数

 

先从单次卷积乘法和加法的次数   kernel=3  batch=10,deepth=3 , w_h=224, out_channel=64, stride=1, ph=pw=1

单次卷积 3*3*3=27次  乘法    2*3*3+1(偏置)=19次加法

需要进行的卷积次数为 10×(224+2-2)×(224-2+2)×64次

所以总乘法次数  27*10*224*224*64=867041280

总加法次数  19*10*224*224*64=610140160

 

 

0
回复
宝宝会上天
#728 回复于2020-01

作业7-2:

0
回复
得儿飘飘飘飘
#729 回复于2020-01

作业6-1:

1.将普通神经网络模型的每层输出打印,观察内容

网络:

结果:

2.将分类准确率的指标 用PLT库画图表示

下图使用SGDOptimizer优化器与cross_entropy损失函数生成

3.通过分类准确率,判断以采用不同损失函数训练模型的效果优劣

下图为使用SGDOptimizer优化器的两种损失函数曲线

4.作图比较:随着训练进行,模型在训练集和测试集上的Loss曲线

下图使用AdamOptimizer优化器与cross_entropy损失函数生成

5.调节正则化权重,观察4的作图曲线的变化,并分析原因

4出现了过拟合现象,即在训练集上的损失小,在校验集或测试集上的损失较大。

通过添加正则化项来降低模型的复杂度,使模型在“尽量减少训练损失”和“保持模型的泛化能力”之间取得平衡。

0
回复
windly4548
#730 回复于2020-01

作业7-1  计算卷积中一共有多少次乘法和加法操作

输入数据形状是[10, 3, 224, 224],卷积核kh = kw = 3,输出通道数为64,步幅stride=1,填充ph = pw =1

完成这样一个卷积,一共需要做多少次乘法和加法操作?

卷积后图片的尺寸(rgb共3个通道)为:(224+1×2-3+1)×(224+1×2-3+1)×3 = 150528
每个卷积点需要做乘法:3×3 = 9
每个卷积点需要做加法(加上bias):3×3-1+1 = 9
输入卷积核参数为10个,输出卷积核参数为64个,需要做:
乘法:150528×9×10×64 = 867041280次
加法:150528×9×10×64 = 867041280次

0
回复
windly4548
#731 回复于2020-01

作业7-2
名称        w形状        w参数个数          b形状         b参数个数        输出形状
conv1     [6,3,5,5]     450                     [6]            6                      [10,6,224,224]
pool1     无              无                        无             无                     [10,6,112,112] 
conv2    [16,6,5,5]   2400                    [16]           16                   [10,16,112,112]
pool2    无               无                        无             无                     [10,16,56,56]
fc1        [50176,64]  3211264             [64]          64                     [10, 64]
fc2        [64,1]          64                       [1]            1                       [10,1]

 

0
回复
a
awesomezzzz000
#732 回复于2020-01

作业5-1:

# 用测试集计算当前面模型准确率
with fluid.dygraph.guard():
    model = MNIST("mnist")
    params_file_path = 'mnist'
    model_dict, _ = fluid.load_dygraph(params_file_path)
    model.load_dict(model_dict)
    
    model.eval()
    test_loader = paddle.batch(paddle.dataset.mnist.test(), batch_size=16)
    batches = 0
    acc_sum = 0
    for batch_id, data in enumerate(test_loader()):
        image_data = np.array([x[0] for x in data]).astype('float32')
        label_data = np.array([x[1] for x in data]).astype('int64').reshape(-1, 1)
        image = fluid.dygraph.to_variable(image_data)
        label = fluid.dygraph.to_variable(label_data)
        
        predict = model(image)
        predict.numpy().astype('int64')

        acc = fluid.layers.accuracy(input=predict, label=label)
        acc_sum += acc
        batches += 1
    print("acc on test set is", acc_sum.numpy()/batches)

acc on test set is [0.098]

作业5-2:

AlexNet, EfficientNet

作业5-3:

Adam最好,learning rate 0.001效果最好。Adam完之后再来个SGD,有时候效果更佳。

 

 

0
回复
w
wangyf童鞋
#733 回复于2020-01

作业6-1:

1.通过运行2-8代码,可以打印神经网络的参数尺寸、输出特征形状以及网络参数。

2.通过将2-8代码进行修改,画出训练过程中分类准确率的变化。

3.以下是使用交叉熵为损失函数所得到的分类准确率:

以下是使用噪音对比估计损失值nce所得的分类准确率:

4.下图是训练集:

下图是测试集:

5.正则化权重为0.01,保持其他超参数不变:

正则化权重为0.04,保持其他超参数不变:

正则化权重为0.07,保持其他超参数不变:

 

正则化权重为0.1,保持其他超参数不变:

0
回复
scy
#734 回复于2020-01

作业7-1  计算卷积中一共有多少次乘法和加法操作

输入数据形状是[10, 3, 224, 224],卷积核kh = kw = 3,输出通道数为64,步幅stride=1,填充ph = pw =1

完成这样一个卷积,一共需要做多少次乘法和加法操作?

输入数据形状[10,3,224,224],输出数据的为64个通道,
每个通道大小为 (224 + 2*1 - 3)/1 + 1 = 224,所以输出数据形状为[10,64,224,224];
所有输出的数据点数量为 224*224*64*10 = 32112640,对于每个通道中的每个神经元,
需要做乘法 (3*3) * 3 = 27 次,需要做加法 (3*3 -1)*3 + (3-1) + 1 = 27 次,
因此总共需要乘法 32112640 * 27 = 867041280 次,总共需要加法 867041280 次

 

0
回复
scy
#735 回复于2020-01

作业 7-2:计算网络各层参数和输出形状

输入形状为[10,3,224]

0
回复
得儿飘飘飘飘
#736 回复于2020-01

作业7-1:

乘法867041280,加法867041280

作业7-2:

0
回复
A
AIStudio179297
#737 回复于2020-01

作业5-1:

计算得出的准确率为0.97

with fluid.dygraph.guard():
    print('start evaluation .......')
    #加载模型参数
    model = MNIST("mnist")
    model_state_dict, _ = fluid.load_dygraph('mnist')
    model.load_dict(model_state_dict)

    model.eval()
    eval_loader = load_data('eval')

    acc_set = []
    avg_loss_set = []
    for batch_id, data in enumerate(eval_loader()):
        img = fluid.dygraph.to_variable(x_data)
        label = fluid.dygraph.to_variable(y_data)
        prediction, acc = model(img, label)
        loss = fluid.layers.cross_entropy(input=prediction, label=label)
        avg_loss = fluid.layers.mean(loss)
        acc_set.append(float(acc.numpy()))
        avg_loss_set.append(float(avg_loss.numpy()))
        #一个batch为100张,只用一个batch即可
        break;
    
    #计算多个batch的平均损失和准确率
    acc_val_mean = np.array(acc_set).mean()
    avg_loss_val_mean = np.array(avg_loss_set).mean()

    print('loss={}, acc={}'.format(avg_loss_val_mean, acc_val_mean))


5-2

常见的卷积神经网络有,Letnet-5,AlexNet、ZFNet、VGGNet、GoogleNet,Resnet,FCN等

0
回复
A
AIStudio179297
#738 回复于2020-01

作业5-3:

Adam算法效果最好,学习率取0.01效果最好

0
回复
vortual_skyphet
#739 回复于2020-01

作业5:

(1)

test_loader = paddle.batch(paddle.dataset.mnist.test(), batch_size=100)
with fluid.dygraph.guard():
    model = MNIST("mnist")
    # 加载模型参数
    model_dict, _ = fluid.load_dygraph("mnist")
    model.load_dict(model_dict)
    model.eval()
    for batch_id, data in enumerate(test_loader()):
        image_data = np.array([x[0] for x in data]).astype('float32')
        label_data = np.array([x[1] for x in data]).astype('float32').reshape(-1, 1)
        # 将数据转为飞桨动态图格式
        image = fluid.dygraph.to_variable(image_data)
        label = fluid.dygraph.to_variable(label_data)
        
        
        #前向计算的过程
        predict = model(image)
    # print(label.numpy().astype('int32'))
    # print(predict.numpy().astype('int32'))
    
    diff = predict.numpy().astype('int32') - label.numpy().astype('int32')
    true_result = np.sum((diff==0))
    print(true_result/diff.shape[0])

(2)常见卷积神经网络:LeNet、Alexnet、VGGNet、ResNet、Google Inception系列

 (3)

import matplotlib.pyplot as plt
%matplotlib inline
def getOptimizer(optimizer, learing_rate):
    if optimizer == 'SGD':
        optimizer = fluid.optimizer.SGDOptimizer(learing_rate)
    elif optimizer == 'Momentum':
        optimizer = fluid.optimizer.MomentumOptimizer(learing_rate, momentum=0.9)
    elif optimizer == 'Adagrad':
        optimizer = fluid.optimizer.AdagradOptimizer(learing_rate)
    else:
        optimizer = fluid.optimizer.AdamOptimizer(learing_rate)
    
    return optimizer

#仅优化算法的设置有所差别
with fluid.dygraph.guard():
    #四种优化算法的设置方案,可以逐一尝试效果
    # optimizer = fluid.optimizer.SGDOptimizer(learning_rate=0.01)
    #optimizer = fluid.optimizer.MomentumOptimizer(learning_rate=0.01)
    #optimizer = fluid.optimizer.AdagradOptimizer(learning_rate=0.01)
    #optimizer = fluid.optimizer.AdamOptimizer(learning_rate=0.01)
    
    optimizerList = ['SGD','Momentum','Adagrad','Adam']
    learingRateList = [0.1,0.01,0.001]
    
    for i,optimizerStr in enumerate(optimizerList):
        title = optimizerStr
        plt.subplot(2, 2, i+1)
        for learingRate in learingRateList:
            optimizer = getOptimizer(optimizerStr, learingRate)
            
            model = MNIST("mnist")
            model.train()
            #调用加载数据的函数
            train_loader = load_data('train')
            
            losses = []
            EPOCH_NUM = 2
            for epoch_id in range(EPOCH_NUM):
                for batch_id, data in enumerate(train_loader()):
                    #准备数据,变得更加简洁
                    image_data, label_data = data
                    image = fluid.dygraph.to_variable(image_data)
                    label = fluid.dygraph.to_variable(label_data)
                    
                    #前向计算的过程
                    predict = model(image)
                    
                    #计算损失,取一个批次样本损失的平均值
                    loss = fluid.layers.cross_entropy(predict, label)
                    avg_loss = fluid.layers.mean(loss)
                    losses.append(avg_loss.numpy())
                    
                    #每训练了100批次的数据,打印下当前Loss的情况
                    if batch_id % 200 == 0:
                        print("{}_{}, epoch: {}, batch: {}, loss is: {}".format(optimizerStr, str(learingRate), epoch_id, batch_id, avg_loss.numpy()))
                    
                    #后向传播,更新参数的过程
                    avg_loss.backward()
                    optimizer.minimize(avg_loss)
                    model.clear_gradients()
        
            plot_x = np.arange(len(losses))
            plot_y = np.array(losses)
            plt.plot(plot_x, plot_y, label=str(learingRate))
            plt.title(title)
            plt.xlabel('iteration')
            plt.ylabel('loss')
            plt.legend(loc='best')
    plt.show()       
0
回复
莲子心
#740 回复于2020-01

########## print network layer's superparams ##############
conv1-- kernel_size:[20, 1, 5, 5], padding:[2, 2], stride:[1, 1]
conv2-- kernel_size:[20, 20, 5, 5], padding:[2, 2], stride:[1, 1]
pool1-- pool_type:max, pool_size:[2, 2], pool_stride:[2, 2]
pool2-- pool_type:max, poo2_size:[2, 2], pool_stride:[2, 2]
fc-- weight_size:[980, 10], bias_size_[10], activation:softmax

########## print shape of features of every layer ###############
inputs_shape: [100, 1, 28, 28]
outputs1_shape: [100, 20, 28, 28]
outputs2_shape: [100, 20, 14, 14]
outputs3_shape: [100, 20, 14, 14]
outputs4_shape: [100, 20, 7, 7]
outputs5_shape: [100, 10]

2

0
回复
aaaLKgo
#741 回复于2020-01

作业7-1:乘法 867041280,加法(有bias)867041280,加法(无bias)834928640

简单总结一下:批次大小B,输入通道Cin,输入高度H,输入宽度W,卷积核高kh,卷积核宽kw,输出通道Cout,步长stride,填充高度ph,填充宽度pw

乘法数量为:kh * kw * Cin * [(H + 2 * ph - kh + 1) / stride] * [(W + 2 * pw - kw + 1) / stride] * Cout * B

加法数量为(有bias):[(kh * kw - 1) * Cin + (Cin - 1) + 1] * [(H + 2 * ph - kh + 1) / stride] * [(W + 2 * pw - kw + 1) / stride] * Cout * B 化简下来,会发现和乘法的计算数量是一致的。

加法数量为(无bias):[(kh * kw - 1) * Cin + (Cin - 1) ] * [(H + 2 * ph - kh + 1) / stride] * [(W + 2 * pw - kw + 1) / stride] * Cout * B ,其实就是在单个窗口的时候少加了一个偏置项,化简下来

(kh * kw * Cin - 1) * [(H + 2 * ph - kh + 1) / stride] * [(W + 2 * pw - kw + 1) / stride] * Cout * B

0
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户