李宏毅+机器学习_李宏毅机器学习深度学习视频 - CSDN
  • 关于“一个属性有几个固定选项,怎么表达”的问题,数据采用one-hot,每个选项独立成一个属性,loss用交叉熵计算,这样更科学。这里不用过多操心,数据给出已经处理好了。 有一段可能是助教给的参考代码,不过...

    关于“一个属性有几个固定选项,怎么表达”的问题,数据采用one-hot,每个选项独立成一个属性,loss用交叉熵计算,这样更科学。这里不用过多操心,数据给出已经处理好了。

     

    有一段可能是助教给的参考代码,不过参考代码有些漏洞(在代码下方贴出),需要修改下,然后还有一定的调参提升空间。

     


    参考代码如下:

     

    import os, sys
    import numpy as np
    from random import shuffle
    import argparse
    from math import log, floor
    import pandas as pd
    
    # If you wish to get the same shuffle result
    # np.random.seed(2401)
    
    def load_data(train_data_path, train_label_path, test_data_path):
        X_train = pd.read_csv(train_data_path, sep=',', header=0)
        X_train = np.array(X_train.values)
        Y_train = pd.read_csv(train_label_path, sep=',', header=0)
        Y_train = np.array(Y_train.values)
        X_test = pd.read_csv(test_data_path, sep=',', header=0)
        X_test = np.array(X_test.values)
    
        return (X_train, Y_train, X_test)
    
    def _shuffle(X, Y):
        randomize = np.arange(len(X))
        np.random.shuffle(randomize)
        return (X[randomize], Y[randomize])
    
    def normalize(X_all, X_test):
        # Feature normalization with train and test X
        X_train_test = np.concatenate((X_all, X_test))
        mu = (sum(X_train_test) / X_train_test.shape[0])
        sigma = np.std(X_train_test, axis=0)
        mu = np.tile(mu, (X_train_test.shape[0], 1))
        sigma = np.tile(sigma, (X_train_test.shape[0], 1))
        X_train_test_normed = (X_train_test - mu) / sigma
    
        # Split to train, test again
        X_all = X_train_test_normed[0:X_all.shape[0]]
        X_test = X_train_test_normed[X_all.shape[0]:]
        return X_all, X_test
    
    def split_valid_set(X_all, Y_all, percentage):
        all_data_size = len(X_all)
        valid_data_size = int(floor(all_data_size * percentage))#这个比例反了。
    
        X_all, Y_all = _shuffle(X_all, Y_all)
    
        X_train, Y_train = X_all[0:valid_data_size], Y_all[0:valid_data_size]
        X_valid, Y_valid = X_all[valid_data_size:], Y_all[valid_data_size:]
    
        return X_train, Y_train, X_valid, Y_valid
    
    def sigmoid(z):
        res = 1 / (1.0 + np.exp(-z))
        return np.clip(res, 1e-8, 1-(1e-8))
    
    def valid(w, b, X_valid, Y_valid):
        valid_data_size = len(X_valid)
    
        z = (np.dot(X_valid, np.transpose(w)) + b)
        y = sigmoid(z)
        y_ = np.around(y)
        result = (np.squeeze(Y_valid) == y_)
        print('Validation acc = %f' % (float(result.sum()) / valid_data_size))
        return
    
    def train(X_all, Y_all, save_dir):
    
        # Split a 10%-validation set from the training set
        valid_set_percentage = 0.1
        X_train, Y_train, X_valid, Y_valid = split_valid_set(X_all, Y_all, valid_set_percentage)
    
        # Initiallize parameter, hyperparameter
        w = np.zeros((106,))
        b = np.zeros((1,))
        l_rate = 0.1
        batch_size = 32
        train_data_size = len(X_train)
        step_num = int(floor(train_data_size / batch_size))
        epoch_num = 1000
        save_param_iter = 50
    
        # Start training
        total_loss = 0.0
        for epoch in range(1, epoch_num):
            # Do validation and parameter saving
            if (epoch) % save_param_iter == 0:
                print('=====Saving Param at epoch %d=====' % epoch)
                if not os.path.exists(save_dir):
                    os.mkdir(save_dir)
                np.savetxt(os.path.join(save_dir, 'w'), w)
                np.savetxt(os.path.join(save_dir, 'b'), [b,])
                print('epoch avg loss = %f' % (total_loss / (float(save_param_iter) * train_data_size)))
                total_loss = 0.0
                valid(w, b, X_valid, Y_valid)
    
            # Random shuffle
            X_train, Y_train = _shuffle(X_train, Y_train)
    
            # Train with batch
            for idx in range(step_num):
                X = X_train[idx*batch_size:(idx+1)*batch_size]
                Y = Y_train[idx*batch_size:(idx+1)*batch_size]
    
                z = np.dot(X, np.transpose(w)) + b
                y = sigmoid(z)
    
                cross_entropy = -1 * (np.dot(np.squeeze(Y), np.log(y)) + np.dot((1 - np.squeeze(Y)), np.log(1 - y)))
                total_loss += cross_entropy
    
                w_grad = np.sum(-1 * X * (np.squeeze(Y) - y).reshape((batch_size,1)), axis=0)
                b_grad = np.sum(-1 * (np.squeeze(Y) - y))
    
                # SGD updating parameters
                w = w - l_rate * w_grad
                b = b - l_rate * b_grad
    
        return
    
    def infer(X_test, save_dir, output_dir):
        test_data_size = len(X_test)
    
        # Load parameters
        print('=====Loading Param from %s=====' % save_dir)
        w = np.loadtxt(os.path.join(save_dir, 'w'))
        b = np.loadtxt(os.path.join(save_dir, 'b'))
    
        # predict
        z = (np.dot(X_test, np.transpose(w)) + b)
        y = sigmoid(z)
        y_ = np.around(y)
    
        print('=====Write output to %s =====' % output_dir)
        if not os.path.exists(output_dir):
            os.mkdir(output_dir)
        output_path = os.path.join(output_dir, 'log_prediction.csv')
        with open(output_path, 'w') as f:
            f.write('id,label\n')
            for i, v in  enumerate(y_):
                f.write('%d,%d\n' %(i+1, v))
    
        return
    
    def main(opts):
        # Load feature and label
        X_all, Y_all, X_test = load_data(opts.train_data_path, opts.train_label_path, opts.test_data_path)
        # Normalization
        X_all, X_test = normalize(X_all, X_test)
    
        # To train or to infer
        if opts.train:
            train(X_all, Y_all, opts.save_dir)
        elif opts.infer:
            infer(X_test, opts.save_dir, opts.output_dir)
        else:
            print("Error: Argument --train or --infer not found")
        return
    
    if __name__ == '__main__':
        parser = argparse.ArgumentParser(description='Logistic Regression with Gradient Descent Method')
        group = parser.add_mutually_exclusive_group()
        group.add_argument('--train', action='store_true', default=False,
                            dest='train', help='Input --train to Train')
        group.add_argument('--infer', action='store_true',default=False,
                            dest='infer', help='Input --infer to Infer')
        parser.add_argument('--train_data_path', type=str,
                            default='feature/X_train', dest='train_data_path',
                            help='Path to training data')
        parser.add_argument('--train_label_path', type=str,
                            default='feature/Y_train', dest='train_label_path',
                            help='Path to training data\'s label')
        parser.add_argument('--test_data_path', type=str,
                            default='feature/X_test', dest='test_data_path',
                            help='Path to testing data')
        parser.add_argument('--save_dir', type=str,
                            default='logistic_params/', dest='save_dir',
                            help='Path to save the model parameters')
        parser.add_argument('--output_dir', type=str,
                            default='logistic_output/', dest='output_dir',
                            help='Path to save the model parameters')
        opts = parser.parse_args()
        main(opts)

    代码错误有几点:

    1.每一个epoch中,用于计算cross_entropy从而统计进total_loss的数据量,是step_num*batch_size,小于train_data_size。而ta

    它用的是train_data_size。

    这两个数据对比:结果证实,确实有点偏差,不过因为他只是打印,不是训练过程,所以看起来也没影响结果。

    2.split_valid_set中,训练集和验证集划分错了,用验证集的比例,提取了训练集。

    这个也很明显,会对结果产生显著影响

    3.感谢网友weixin_42183288提醒,不过此处确实没错:交叉熵隐含了sum操作!

    因为np.dot是点积,点积已经等于sum了,batch_size个样本,最终只输出一维结果,对于batch_size个样本,loss既然是求和,grad也应该是求和,grad要和loss保持同步,所以grad就是sum。

    print('epoch avg loss = %f' % (total_loss / (float(save_param_iter) * train_data_size)))

    从这句打印也看得出,loss确实是所有样本的和,然后才除以迭代epoch次数和data_size,平均到每个样本。

    但是打印归打印,这句不是也说了是avg loss嘛!实际的total loss,还是针对batch的sum。

     

    其实这根本不是应该纠结的点!!!这可能是接触代码不多的新手都会碰到的疑惑:

    “课程中是除以m,也就是mean”

    “loss要用sum还是mean?”

    “grad要用sum还是mean?”

    “为什么我用mean比用sum感觉要更准一点?”

    本质上,这是没区别的,梯度下降,下降的是什么?loss的值!具体loss或者w的大小,只与计算机对小数的表达能力有关(这个角度看,mean反而不如sum准),而不太可能上升到模型准确度差异的高度!教科书是为了示意,如果他想精准地表达梯度,当然要除以m,可是实际计算当中,区别不大。

    无论你的grad是用了sum还是mean,最终都是一个数值(乘以参数数量),是数值,在梯度下降时就逃不过乘以l_rate这一环,如果你觉得你用了mean比sum训练结果更准,可以把sum版本对应的l_rate调小一点(实际训练中往往是变动的学习率,越到后期越小)

                w_grad = np.mean(-1 * X * (np.squeeze(Y) - y).reshape((batch_size,1)), axis=0)
                b_grad = np.mean(-1 * (np.squeeze(Y) - y))
    
                # SGD updating parameters
                w = w - l_rate * w_grad
                b = b - l_rate * b_grad

     

     

     

    4.还有个什么错误我忘了。。。。

     

     

    上传kaggle,这是两条分数分段线:

    0.84952高分

    0.84215及格

     

    验证集分配错误的,也够及格

    0.84803

     

    优化的分配比例的:

            X_valid,Y_valid = X_all[0:valid_data_size],Y_all[0:valid_data_size]
            X_train,Y_train = X_all[valid_data_size:],Y_all[valid_data_size:]
    

    0.85159

    下边是调整其他参数,batch_size和epoch等:

    batch_size提升到64,epoch到5000

    0.85356

    batch_size提升到64,epoch到5000,l_rate到0.5

    0.84201

    会下降,猜测可能是没用adagrad,这里不收敛了。

    batch_size提升到64,epoch到5000,l_rate改到0.2,

    0.85036

    比0.5要强,不过还是比0.1差些,也许有运气成分,每次训练也不一样。

    batch_size提升到64,epoch到5000,l_rate改到0.05,

     

    0.85380目前最优,可能是epoch数量比较大,抵消了learning rate的降低效应。可以明显看到,learning调大明显有收敛问题,所以adagrad可能效果更好。

     

    还有训练,集和验证集的比例可以调:

    batch_size提升到64,epoch到5000,l_rate改到0.05,验证集改到0.3(默认0.1)

    validation acc = 0.851761

    实际分数0.85417目前最优,可能说明之前的有过拟合现象。

    其他不动,验证集比例改回0.1重新测

    validation acc = 0.860258
    分数:0.85417,居然一样

    本地validation  acc更高一些,实际分数还一样,是有一点过拟合吧??!!

    调了一下记录,可以看到倒数第二次,虽然公开的也是0.85417,和最后一次一样,但是最后一次在private衰减到了0.84891,证明最后一次确实比倒数第二次过拟合

    但是过拟合和过拟合也不一样,有两种过拟合,这里说明最后一次是针对线上公开成绩的过拟合,private set发生衰减。

    前边说的是针对验证集的过拟合,线上答案发生衰减。

     

    紫色字体不算绝对严谨,因为需要更细致的测试对比,每次训练本来就有微小的差距。这里主要讨论可能存在的问题和优化思路,因为时间关系和运算量的关系,就不在这纠结了,先结了。

     

    实际跑了一下adagrad,效果飘忽,调起来比较麻烦,时间问题,略过

                    w_s_gra = np.zeros(106)
                    b_s_gra = np.zeros(1)
    
                    for idx in range(step_num):
                            X = X_train[idx*batch_size:(idx+1)*batch_size]
                            Y = Y_train[idx*batch_size:(idx+1)*batch_size]
    
                            z = np.dot(X,np.transpose(w))+b
    
                            y = sigmoid(z)
    
                            cross_entropy = -1*(np.dot(np.squeeze(Y),np.log(y))+np.dot(1-np.squeeze(Y),np.log(1-y)))
                            total_loss += cross_entropy
                            w_grad = np.mean(-1*X*(np.squeeze(Y)-y).reshape((batch_size,1)),axis=0)
                            b_grad = np.mean(-1*(np.squeeze(Y)-y))
    
    
    
                            w_s_gra += w_grad**2
                            b_s_gra += b_grad**2
                            w_ada = np.sqrt(w_s_gra)
                            b_ada = np.sqrt(b_s_gra)
    
    
                            w = w - l_rate * w_grad/w_ada
                            b = b - l_rate * b_grad/b_ada
    
    

     

     

    可能有编辑错的地方,凑合看吧,实在懒得多写了,这个csdn现在真难用,拼音打一半就自动换行了。

     

     

     

     
    展开全文
  • VIDEO 【1】Learning Map(学习导图) blog pdf video 【2】Regression:Case Study ;回归:案例研究 blog pdf video 【3】Gradient Descent ;梯度下降 blog pdf video 【4

    今天收到了第一笔赞赏,非常感谢,也很惊喜,o( ̄▽ ̄)ブ

    时间 赞赏者 赞赏留言 赞赏数额
    2019.7.18 奔跑 感谢你整理Hong-yi Lee老师讲解的机器学习的资料~ 5元
    2019.7.27 Eivind 谢谢 1元
    2019.11.22 * 加油 10元
    2019.11.03 比球还圆 谢谢你的工作对我很有帮助 20元
    TOPIC CONTENTS BLOG PDF VIDEO
    【1】Learning Map(学习导图) blog pdf video
    【2】Regression:Case Study ;回归:案例研究 blog pdf video
    【3】Gradient Descent ;梯度下降 blog pdf video
    【4】Where does the error come from? ;误差分析 blog pdf video
    【5】Classification: Probabilistic Generative Model;分类:概率生成模型 blog pdf video
    【6】Classification: Logistic Regression;Logistic回归 blog pdf video
    【7】Brief Introduction of Deep Learning;深度学习简介 blog pdf video
    【8】Backpropagation;反向传播算法 blog pdf video
    【9】“Hello world” of deep learning;初探深度学习 blog pdf video
    【10】Tips for Deep Learning;深度学习小贴士 blog pdf video
    【11】Convolutional Neural Network;卷积神经网络 blog pdf video
    【12】Why Deep Learning? ; 为什么是深度学习? blog pdf video
    【13】Semi-supervised Learning ;半监督学习 blog pdf video
    【14】Unsupervised Learning: Linear Dimension Reduction;线性降维 blog pdf video
    【15】Unsupervised Learning: Word Embedding;无监督学习:词嵌入 blog pdf video
    【16】Unsupervised Learning: Neighbor Embedding;无监督学习:邻域嵌套 这里写图片描述 blog pdf video
    【17】Unsupervised Learning: Deep Auto-encoder;无监督学习:深度自动编码器 这里写图片描述 blog pdf video
    【18】Deep Generative Model-part 1:深度生成模型-part 1 这里写图片描述 blog pdf video
    【19】Deep Generative Model-part 2:深度生成模型-part 2 这里写图片描述 blog pdf video
    【20】Deep Generative Model-part 3:深度生成模型-part 3 这里写图片描述 blog pdf video
    【21】Transfer Learning part 1 ; 迁移学习 part 1 这里写图片描述 blog pdf video
    【22】Transfer Learning part 2;迁移学习 part 2 这里写图片描述 blog pdf video
    【23】Support Vector Machine;支持向量机 这里写图片描述 blog pdf video
    【24】introduction of Structured Learning;结构化学习介绍 这里写图片描述 blog pdf video
    【25】Structured Linear Model;结构化预测-线性模型 这里写图片描述 blog pdf video
    【26】Structured Support Vector Machine part 1;结构化支持向量机part 1 这里写图片描述 blog pdf video
    【27】Structured SVM part 2;结构化支持向量机 part 2 这里写图片描述 blog pdf video
    【28】Structured SVM part 3 ;结构化支持向量机 part 3 这里写图片描述 blog pdf video
    【29】Sequence Labeling Problem part 1;结构化预测-序列标记 part 1 这里写图片描述 blog pdf video
    【30】Sequence Labeling Problem part 2 ;结构化预测-序列标记 part 2 这里写图片描述 blog pdf video
    【31】Sequence Labeling Problem part 3 ;结构化预测-序列标记 part 3 这里写图片描述 blog pdf video
    【32】Recurrent Neural Network part 1;循环神经网络 part 1 这里写图片描述 blog pdf video
    【33】Recurrent Neural Network part 2;循环神经网络 part 2 这里写图片描述 blog pdf video
    【34】Recurrent Neural Network part 3;循环神经网络 part 3 这里写图片描述 blog pdf video
    【35】Ensemble;集成方法 这里写图片描述 blog pdf video
    【36】Ensemble part 2;集成方法 part 2 这里写图片描述 blog pdf video
    【37】Deep Reinforcement Learning;深度增强学习入门 这里写图片描述 blog pdf video
    【38】李宏毅机器学习课程回顾 + 接下来的学习声明 这里写图片描述 blog
    【39】李宏毅机器学习课程从这里开始 本文 blog

    相关链接:
    课程主页:http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML16.html
    PPT打包下载:http://speech.ee.ntu.edu.tw/~tlkagk/courses/ML_2016/all.rar

    在这里插入图片描述

    展开全文
  • 机器学习相关岗位在这个人工智能时代还是非常吃香的,经常听到别人几十万、上百万年薪,十分羡慕。在网上搜罗了几份机器学习的教学视频,在这里分享给大家。 更多资源和优质文章,欢迎关注公众号:代码视界。 ...

    机器学习相关岗位在这个人工智能时代还是非常吃香的,经常听到别人几十万、上百万年薪,十分羡慕。在网上搜罗了几份机器学习的教学视频,在这里分享给大家。
    更多资源和优质文章,欢迎关注公众号:代码视界

     

    Python3入门机器学习-经典算法与应用
    链接: https://pan.baidu.com/s/1NvoRVZbzjGvUzVqmH-RTXQ 提取码: s3fc 复制这段内容后打开百度网盘手机App,操作更方便哦

     

    吴恩达/李宏毅机器学习教学视频

    吴恩达和李宏毅两位老师的机器学习教学视频获取方式:
    关注公众号:代码视界,回复“机器学习”获取下载地址。

     

    机器学习算法地图


     

    展开全文
  • 李宏毅 机器学习 课程作业代码李宏毅 机器学习 课程作业代码李宏毅 机器学习 课程作业代码李宏毅 机器学习 课程作业代码李宏毅 机器学习 课程作业代码李宏毅 机器学习 课程作业代码李宏毅 机器学习 课程作业代码...
  • 李宏毅2020机器学习资料汇总

    万次阅读 多人点赞 2020-08-14 18:52:48
    前言 可能受到新冠病毒的影响,台大也开始了...和吴恩达的CS229机器学习相比,中文版本的机器学习显得亲民了许多,李宏毅机器学习是英文的ppt+中文讲解,非常有利于大家入门。吴恩达的CS229中偏向于传统机器学习……
    更新进度:■■■■□□□□□□□□□□□□□□□□|25%
    

    前言

    可能受到新冠病毒的影响,台大也开始了网课教学。李宏毅上传了2020版本的机器学习视频,可以说是非常好的学习资料(尽管其中多数都是2017、2019的视频,但有部分更新)。

    和吴恩达的CS229机器学习相比,中文版本的机器学习显得亲民了许多,李宏毅的机器学习是英文的ppt+中文讲解,非常有利于大家入门。吴恩达的CS229中偏向于传统机器学习(线性回归、逻辑回归、Naive Bayes、决策树、支持向量机等),李宏毅2020版本的机器学习中除了最前面的回归、分类,后面更多篇幅涉及卷积神经网络(CNN)、循环神经网络(RNN)、强化学习(RL)等深度学习的内容,不过,似乎b站上也有他的深度学习的课程,具体差异此后再说。

    2020年版与2017年版、2019年版较为类似,不同的是2019年版用到了keras这一深度学习框架,而2020年版用到了pytorch。近年来,pytorch在计算机会议论文中占比也逐渐增加。鉴于博主最近做课题需要学习pytorch,李宏毅的2020年版机器学习资料确实非常合适。

    李宏毅的机器学习中多处用到了宝可梦(神奇宝贝)、凉宫春日等二次元元素进行举例,对于博主这个伪·二次元来说,学习上没有太大困难。虽然宝可梦、凉宫春日等例子并不影响你的学习,但是博主觉得:如果对它们完全不了解的话,去理解一个陌生的东西可能会比理解猫猫狗狗困难(笑)。对于二次元来说,倒是有种亲切感。

    这个教学视频里面还用到一些游戏举例子,可以说是一个非常有趣的机器学习视频,一旦打开可能就会忍不住学下去(实际上大部分人都是收藏,想着以后再看,然后再也没看过) 。有条件的话,建议大家系统学习。博主之前都是需求驱动型学习,导致很多东西都是一知半解。目前看的这个视频带来了一些新的思考,比如梯度下降的原理、验证集和测试集的正确使用方法等,很有帮助。


    储备知识

    Q:我没有学习过机器学习,需要有什么储备知识?
    A:

    1. 高等数学:涉及导数、偏微分、泰勒展开等,建议系统学习。
    2. 线性代数:涉及向量、协方差矩阵等,建议系统学习。
    3. 概率统计:涉及贝叶斯公式、高斯分布、极大似然估计等,夸张点说,机器学习本质是概率统计。建议先学习高数、线性代数,再系统学习。
    4. 计算机相关:python,jupyter notebook,anaconda,pyenv,github,kaggle,linux基本指令

    资料

    1. 李宏毅的课程网页:点击此处跳转
    2. b站有全套视频的搬运:BV1JE411g7XF,也可以点击此处跳转
    3. 2020版课后作业范例和作业说明点击此处跳转
    4. 附上别人的github学习笔记:点击此处跳转

    学习路线

    在这里插入图片描述
    这一张可以在李宏毅的课程首页上找到,点开b站视频p1可以了解详情。每一个符号代表一个作业,用到pytorch的框架,博主后续可能会更新自己的作业进度(敦促自己赶紧学习),作业提交主要都在kaggle这个平台。

    在这里插入图片描述
    在李宏毅的课程首页上的表格,作业、PPT,目前已经全部发布了,还会有助教说明作业的video,如果你打不开网页,请见上方资料3的作业搬运

    作业

    博主用的是 win10系统,作业的完成基于 jupyter notebook,博主建议利用 Anaconda 创建的虚拟环境来管理 python 版本和相关库,以免覆盖已有的 python 版本。

    相关资料:

    1. Anaconda详细安装及使用教程(带图文)
    2. Anaconda常用命令
    3. Jupyter Notebook介绍、安装及使用教程
      链接挂掉后的备用资料:Jupyter Notebook安装和使用详情
    4. 如何在jupyter notebook下使用anaconda虚拟环境
    5. pytorch官方教程中文版
    6. pytorch官方教程英文版(打开较慢)
    序号 主题 完成情况 完成时间
    1 Linear Regression ✔️ 查看详情 2020/04/10
    2 Classification ✔️ 查看详情 2020/04/14
    3 CNN ✔️ 查看详情 2020/04/26
    4 RNN ✔️ 查看详情 2020/07/30
    5 Explainable AI
    6 Adversarial Attack
    7 Network Compression
    8 Seq2Seq
    9 Unsupervised Learning
    10 Anomaly Detection
    11 GAN
    12 Transfer Learning
    13 Meta Learning
    14 Life-long Learning
    15 Reinforce Learning

    笔记

    根据b站视频的顺序,简单记录一下每个视频讲了些什么,便于搜索或者跳过。另外,博主会在引用部分中强调一些平时会忽视的点。基本都是2019版及之前的视频,如果有新的,就会标注出来;如果是旧的,就不额外赘述了。

    如果你想看视频的文字版,建议去资源4的github学习笔记

    1. ⭐ 李宏毅2020机器学习课程笔记(一):视频P1-P16的课程梗概
    2. ⭐ 李宏毅2020机器学习课程笔记(二):视频P17-的课程梗概


    最后,如果觉得不错,可以小小地赞赏一下(纯自愿)

    展开全文
  • 李宏毅 机器学习 PPT

    2020-07-30 23:30:19
    李宏毅 机器学习 PPT 李宏毅 机器学习 PPT
  • 这是台湾李宏毅机器学习视频,是2017年秋季的。包含完整视频PDF格式的PPT。想赚点积分能够去下载一些资源,所以各位请见谅。内是网盘下载地址。
  • 台大李宏毅老师机器学习课程课件,全部ppt,官网下载整理
  • 李宏毅-机器学习-2019

    2020-07-29 14:21:45
    近日,李宏毅上线了 2019 最新版的机器学习课程,授课语言为中文,且全部开放了课程视频。
  • 文件包括李宏毅机器学习和深度学习的入门介绍,包括线性回归、逻辑回归、神经网络等基础知识,也包括从机器学习到深度学习的一个工程,并结合图像识别,详细讲解了机器学习在攻击与防护领域中的应用。 附——作者...
  • 李宏毅最新 2020 机器学习课程 http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML20.html 按照作业方式编排; 中文绝佳的 ML/DL 入门课程 视频 + ppt + 作业
  • 主要由监督学习、半监督学习、迁移学习、无监督学习、监督学习中的结构化学习以及强化学习构成。最关键的是本文档带书签。
  • 开始之前声明:本文参考了李宏毅机器学习作业说明(需翻墙),基本上是将代码复现了一遍,说明中用的是google colab(由谷歌提供的免费的云平台),我用的是Jupyter Notebook 本文用到的资料在百度网盘自取点击下载...
  • 李宏毅2020机器学习作业——Linear Regression 一、问题描述 ​ 1. 数据描述 ​ 本次作业采用的数据是使用台湾某一座城市的观测记录,分别为train.csv,test.csv,其中train.csv 共有4320行, 27列,包含了该地点18种...
  • 李宏毅2020机器学习课程作业1 平台:windows 编程软件:VScode // A code block # -*- coding: utf-8 -*- import pandas as pd import numpy as np import matplotlib.pyplot as plt import math import csv def ...
  • 开始之前声明:本文参考了李宏毅机器学习作业说明. 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown...
  • 李宏毅机器学习·笔记自己整理成了PDF,现在分享给大家。
  • 文章目录机器学习定义机器学习三板斧监督学习Structuerd Learning无监督学习半监督学习Reinforcement LearningTransfer Learning学习导图机器学习开发流程总结 机器学习定义 机器学习三板斧 1.定义一个函数集合 2....
  • 李宏毅(Hung-yi Lee)目前任台湾大学电机工程学系和电机资讯学院的助理教授,他曾于 2012 年获得台湾大学博士学位,并于 2013 年赴麻省理工学院(MIT)计算机...他的研究方向主要是机器学习(深度学习)和语音识别。
  • 回归Regression一、模型函数二、Goodness of Function损失函数Loss function L:三、挑选出最好的函数梯度下降Gradient Descent 宝可梦CP值预测 设宝可梦的名字为xs、CP值为xcp、HP值为xhp、重量为xw、高度为xh。...
1 2 3 4 5 ... 20
收藏数 3,587
精华内容 1,434
关键字:

李宏毅+机器学习