dataset 订阅
DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。 展开全文
DataSet是ADO.NET的中心概念。可以把DataSet当成内存中的数据库,DataSet是不依赖于数据库的独立数据集合。所谓独立,就是说,即使断开数据链路,或者关闭数据库,DataSet依然是可用的,DataSet在内部是用XML来描述数据的,由于XML是一种与平台无关、与语言无关的数据描述语言,而且可以描述复杂关系的数据,比如父子关系的数据,所以DataSet实际上可以容纳具有复杂关系的数据,而且不再依赖于数据库链路。
信息
应用领域
数据库
概    述
DataSet是ADO.NET的中心概念
特    点
独立性、离线
优    势
处理脱机数据等
中文名
DataSet
实    质
DataTable物件集合
DataSet概述
DataSet 是 ADO. NET结构的主要组件,它是从数据源中检索到的数据在内存中的缓存。DataSet 由一组 DataTable 对象组成,可使这些对象与 DataRelation 对象互相关联。还可通过使用 UniqueConstraint 和 ForeignKeyConstraint 对象在 DataSet 中实施数据完整性。 [1]  正是由于DataSet才使得程序员在编程时可以屏蔽数据库之间的差异,从而获得一致的编程模型。DataSet支持多表、表间关系、数据约束等,和关系数据库的模型基本一致。ado.net DataSet 的设计已明确指出它可独立于任何资料来源外而存取资料。因此,它可与多个不同的资料里来源搭配使用、与 XML 资料搭配使用,或用于管理应用程序的本机资料。DataSet 包含一或多个由资料列和资料行所组成的DataTable物件集合,以及 DataTable 物件中的主索引键、外部索引键、条件约束 (Constraint) 及资料的相关资讯。尽管 DataTable 对象中包含数据,但是 DataRelationCollection 允许遍览表的层次结构。这些表包含在通过 Tables 属性访问的 DataTableCollection 中。当访问 DataTable 对象时,请注意它们是按条件区分大小写的。例如,如果一个 DataTable 被命名为“mydatatable”,另一个被命名为“Mydatatable”,则用于搜索其中一个表的字符串被认为是区分大小写的。但是,如果“mydatatable”存在而“Mydatatable”不存在,则认为该搜索字符串不区分大小写。 [1]  DataSet 可将数据和架构作为 XML 文档进行读写。数据和架构可通过 HTTP 传输,并在支持 XML 的任何平台上被任何应用程序使用。可使用 WriteXmlSchema 方法将架构保存为 XML 架构,并且可以使用 WriteXml 方法保存架构和数据。若要读取既包含架构也包含数据的 XML 文档,可使用 ReadXml 方法。在典型的多层实现中,用于创建和刷新 DataSet 并依次更新原始数据的步骤包括:通过 DataAdapter 使用数据源中的数据生成和填充 DataSet 中的每个 DataTable。通过添加、更新或删除 DataRow 对象更改单个 DataTable 对象中的数据。调用 GetChanges 方法以创建只反映对数据进行的更改的第二个 DataSet。调用 DataAdapter 的 Update 方法,并将第二个 DataSet 作为参数传递。调用 Merge 方法将第二个 DataSet 中的更改合并到第一个中。针对 DataSet 调用 AcceptChanges。或者,调用 RejectChanges 以取消更改。需要注意的是:dataset所有数据都加载在内存上执行的,可以提高数据访问速度,提高硬盘数据的安全性。极大的改善了程序运行的速度和稳定性。 [1] 
收起全文
精华内容
下载资源
问答
  • dataset

    2007-06-12 12:16:09
    dataset導入到excel
  • Dataset之COCO数据集:COCO数据集的简介、安装、使用方法之详细攻略 目录 COCO数据集的简介 0、COCO数据集的80个类别—YoloV3算法采用的数据集 1、COCO数据集的意义 2、COCO数据集的特点 3、数据集的...

    Dataset之COCO数据集:COCO数据集的简介、安装、使用方法之详细攻略

    目录

    COCO数据集的简介

    0、COCO数据集的80个类别—YoloV3算法采用的数据集

    1、COCO数据集的意义

    2、COCO数据集的特点

    3、数据集的大小和版本

    COCO数据集的下载

    1、2014年数据集的下载

    2、2017的数据集的下载

    COCO数据集的使用方法

    1、基础用法


    COCO数据集的简介

            MS COCO的全称是Microsoft Common Objects in Context,起源于微软于2014年出资标注的Microsoft COCO数据集,与ImageNet竞赛一样,被视为是计算机视觉领域最受关注和最权威的比赛之一。 
            COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以scene understanding为目标,主要从复杂的日常场景中截取,图像中的目标通过精确的segmentation进行位置的标定。图像包括91类目标,328,000影像和2,500,000个label。目前为止有语义分割的最大数据集,提供的类别有80 类,有超过33 万张图片,其中20 万张有标注,整个数据集中个体的数目超过150 万个。

    官网地址http://cocodataset.org

    0、COCO数据集的80个类别—YoloV3算法采用的数据集

    person(人)  
    bicycle(自行车)  car(汽车)  motorbike(摩托车)  aeroplane(飞机)  bus(公共汽车)  train(火车)  truck(卡车)  boat(船)  
    traffic light(信号灯)  fire hydrant(消防栓)  stop sign(停车标志)  parking meter(停车计费器)  bench(长凳)  
    bird(鸟)  cat(猫)  dog(狗)  horse(马)  sheep(羊)  cow(牛)  elephant(大象)  bear(熊)  zebra(斑马)  giraffe(长颈鹿)  
    backpack(背包)  umbrella(雨伞)  handbag(手提包)  tie(领带)  suitcase(手提箱)  
    frisbee(飞盘)  skis(滑雪板双脚)  snowboard(滑雪板)  sports ball(运动球)  kite(风筝) baseball bat(棒球棒)  baseball glove(棒球手套)  skateboard(滑板)  surfboard(冲浪板)  tennis racket(网球拍)  
    bottle(瓶子)  wine glass(高脚杯)  cup(茶杯)  fork(叉子)  knife(刀)
    spoon(勺子)  bowl(碗)  
    banana(香蕉)  apple(苹果)  sandwich(三明治)  orange(橘子)  broccoli(西兰花)  carrot(胡萝卜)  hot dog(热狗)  pizza(披萨)  donut(甜甜圈)  cake(蛋糕)
    chair(椅子)  sofa(沙发)  pottedplant(盆栽植物)  bed(床)  diningtable(餐桌)  toilet(厕所)  tvmonitor(电视机)  
    laptop(笔记本)  mouse(鼠标)  remote(遥控器)  keyboard(键盘)  cell phone(电话)  
    microwave(微波炉)  oven(烤箱)  toaster(烤面包器)  sink(水槽)  refrigerator(冰箱)
    book(书)  clock(闹钟)  vase(花瓶)  scissors(剪刀)  teddy bear(泰迪熊)  hair drier(吹风机)  toothbrush(牙刷)

    1、COCO数据集的意义

            MS COCO的全称是Microsoft Common Objects in Context,起源于是微软于2014年出资标注的Microsoft COCO数据集,与ImageNet 竞赛一样,被视为是计算机视觉领域最受关注和最权威的比赛之一。
            当在ImageNet竞赛停办后,COCO竞赛就成为是当前目标识别、检测等领域的一个最权威、最重要的标杆,也是目前该领域在国际上唯一能汇集Google、微软、Facebook以及国内外众多顶尖院校和优秀创新企业共同参与的大赛。 
            该数据集主要解决3个问题:目标检测,目标之间的上下文关系,目标的2维上的精确定位。COCO数据集有91类,虽然比ImageNet和SUN类别少,但是每一类的图像多,这有利于获得更多的每类中位于某种特定场景的能力,对比PASCAL VOC,其有更多类和图像。

    1、COCO目标检测挑战 

    • COCO数据集包含20万个图像;
    • 80个类别中有超过50万个目标标注,它是最广泛公开的目标检测数据库;
    • 平均每个图像的目标数为7.2,这些是目标检测挑战的著名数据集。
       

    2、COCO数据集的特点

    COCO is a large-scale object detection, segmentation, and captioning dataset. COCO has several features:

    • Object segmentation
    • Recognition in context
    • Superpixel stuff segmentation
    • 330K images (>200K labeled)
    • 1.5 million object instances
    • 80 object categories
    • 91 stuff categories
    • 5 captions per image
    • 250,000 people with keypoints
    1. 对象分割;
    2. 在上下文中可识别;
    3. 超像素分割;
    4. 330K图像(> 200K标记);
    5. 150万个对象实例;
    6. 80个对象类别;
    7.  91个类别;
    8. 每张图片5个字幕;
    9. 有关键点的250,000人;

    3、数据集的大小和版本

    大小:25 GB(压缩)
    记录数量: 330K图像、80个对象类别、每幅图像有5个标签、25万个关键点。
             COCO数据集分两部分发布,前部分于2014年发布,后部分于2015年,2014年版本:82,783 training, 40,504 validation, and 40,775 testing images,有270k的segmented people和886k的segmented object;2015年版本:165,482 train, 81,208 val, and 81,434 test images。
    (1)、2014年版本的数据,一共有20G左右的图片和500M左右的标签文件。标签文件标记了每个segmentation的像素精确位置+bounding box的精确坐标,其精度均为小数点后两位。

    COCO数据集的下载

    官网地址:http://cocodataset.org/#download

    1、2014年数据集的下载

    train2014:http://images.cocodataset.org/zips/train2014.zip
    val2014:http://images.cocodataset.org/zips/val2014.zip

    http://msvocds.blob.core.windows.net/coco2014/train2014.zip

    2、2017的数据集的下载

    http://images.cocodataset.org/zips/train2017.zip
    http://images.cocodataset.org/annotations/annotations_trainval2017.zip

    http://images.cocodataset.org/zips/val2017.zip
    http://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip

    http://images.cocodataset.org/zips/test2017.zip
    http://images.cocodataset.org/annotations/image_info_test2017.zip

    train2017

    train2017:http://images.cocodataset.org/zips/train2017.zip
    train2017 annotations:http://images.cocodataset.org/annotations/annotations_trainval2017.zip

    val2017

    val2017:http://images.cocodataset.org/zips/val2017.zip
    val2017 annotations:http://images.cocodataset.org/annotations/stuff_annotations_trainval2017.zip

    test2017

    test2017:http://images.cocodataset.org/zips/test2017.zip
    test2017 info:http://images.cocodataset.org/annotations/image_info_test2017.zip

    COCO数据集的使用方法

    1、基础用法

    (1)、Download Images and Annotations from [MSCOCO]后期更新……
    (2)、Get the coco code后期更新……
    (3)、Build the coco code后期更新……
    (4)、Split the annotation to many files per image and get the image size info后期更新……
    (5)、 Create the LMDB file后期更新……

    展开全文
  • DataSet

    千次阅读 2007-04-29 17:11:00
    DataSet是ADO.NET开发人员为方便数据处理开发出来的,是数据的集合,是为解决DataReader的缺陷设计的,DataReader数据处理速度快,但它是只读的, 而且一旦移到下一行,就不能查看上一行的数据,DataSet则可以自由...

    DataSet是ADO.NET开发人员为方便数据处理开发出来的,是数据的集合,是为解决DataReader的缺陷设计的,DataReader数据处理速度快,但它是只读的, 而且一旦移到下一行,就不能查看上一行的数据,DataSet则可以自由移动指针。DataSet的数据是与数据库断开的。DataSet还可用于多层应用程序中,如果应用程序运行在中间层的业务对象中来访问数据库,则业务对象需将脱机数据结构传递给客户应用程序。
      DataSet的功能:浏览、排序、搜索、过滤、处理分级数据、缓存更改等。还可以与XML数据互换。DataSet中可包括多个DataTable,可将多个查询结构存到一个DataSet中,方便操作,而DataTable中又包括多个DataRow、DataColumn,可通过这些DataRow、DataColumn来查看、操作其中的数据,而需将操作结果返回给数据库的话,则可以调用DataAdapter的Update方法。
      DataSet的操作:
    DataSet ds=new DataSet();
    DataTable dt=new DataTable("newTable");
    ds.Tables.Add(dt);
    DataSet ds=new DataSet();
    DataTable dt=ds.Tables.Add("newTable");
    上述两种方法都可以在DataSet中添加一个DataTable,看需要而进行选择。添加DataTable后,需向其中添加行和列。
    DataSet ds=new DataSet();
    DataTable dt=ds.Tables.Add("newTables");
    DataColumn col=dt.Columns.Add("newColumn",typeof(int));
    col.AllowDBNull=false;
    col.MaxLength=4;
    col.Unique=true;

    上述代码向DataSet中的DataTable中添加名为”newColumn”,类型为int且不为空,最大长度为4和唯一性为真的列。
    dt.PrimaryKey=new DataColumn[] {dt.Columns["ID"]}
    这段代码是继续上面代码的,为一个DataTable中添加一个主键列,主键列是一个数据组,如有多个主键,只需在数组中添加一个列即可。如下:
    dt.PrimaryKey=new DataColumns[] {dt.Columns["OrderID"],dt.Columns["ProductID"]}
    添加外键:
    ForeignKeyConstraint fk;
    fk=new ForeignKeyConstraint(ds.Tables["Customers"].Columns["CustomerID"],ds.Tables["Orders"].Columns["CustomerID"]);
    ds.Tables["Orders"].Constraints.Add(fk);
    //上述代码假如已经为Cusomers表和Orders创建了主键,此句为添加外键约束。
    上述是根据Customers表和Orders表的CustomerID来创建约束。
    下面介绍修改DataRow中的内容:
    DataRow dr=ds.Tables["Customer"].Rows.Find("ANTON");
    if(dr==null)
    else
    {
    dr.BeginEdit();
    dr["CompanyName"]="newValue";
    dr["ContactName"]="newValue2";
    dr.EndEdit();
    }
    //上面代码通过Row集合的Find方法来在DataTable中的行进行定位,找到"ANTON"行,再修改"ANTON"行中CompanyName列和ContactName列的值。通过BeginEdit和EndEdit来缓存对行的修改,还可调用 CancelEdit为取消修改。
    判断某列是否为空值:
    DataRow dr=ds.Tables["Customers"].Rows.Find("aaa");
    if(dr.IsNull("ContactName");
    ..
    else
    dr["ContactName"]=DBNull.Value
    //这里判断ContactName列是否为空,如果不是则为其赋空值,呵,很无厘头的做法,这里只为演示为列赋空值的做法。
    删除DataRow:
    有两种方法可以删除DataRow,Delete方法和Remove方法和RemoveAt方法。其区别是Delete方法实际上不是从DataTable中删除掉一行,而是将其标志为删除,仅仅是做个记号,而Remove方法则是真正的从DataRow中删除一行,RemoveAt方法是根本行的索引来删除。列:
    DataRow dr=ds.Tables["table"].Rows.Find("a");
    ds.Tables["table"].Remove(dr);

    ds.Tables["table"].Remove(index);
    //dr 为"a"所在的行,查出后将其删除,index为 "a"所在的索引号。

    DataSet 循环: 

    DataSet ds = new DataSet();
    DataTable dt1 = ds.Tables[0];
    string [] st = new string [dt1.Rows.Count];
    for ( int i=0;i< dt1.Rows.Count;i++ )
    {
    st[i] = dt1.Rows[i]["name"].ToString();
    }

    DataSet
       |
       |____DataTables
       |        |
       |        |____DataTable
       |                |
       |                |____DataRows
       |

    DataSet是独立于物理数据库存在于内存中的一个数据集,实现了数据库的表、关系等等,
    其中可以存放多个表构成DataTables,
    因此用外循环
    foreach(DataTable xTable in DataSet.Tables)
    访问每个表
    用内循环
             foreach(DataRow xRow in xTable.Rows)
    访问当前表中每个记录
    foreach(DataTable xTable in DataSet.Tables)
    {
             foreach(DataRow xRow in xTable.Rows)
            { 
                   
          
               }
    }

     

    DataRow 与DataTable.Select 的结合用法

    DataRow 与DataTable.Select 的结合用法
    ?
    受了网上这段代码的启发:
    Dim ldr As DataRow()
    ldr = mdata. Select("PID<>'" & lstr & "'")
    Dim ldata As DataTable = mdata.Clone'复制表结构
    For Each r As DataRow In ldr
    ldata.ImportRow(r)
    Next
    我写了我所需要的东东。。。
    1. 取出数据库中的数据组成DataTable dt;
    2. 用 DataRow? dr接收 dt. Select() 出来的值;
    3.声名一个表dt2,dt2=dt.Clone();
    4.用foreach( DataRow row in dr),和dt2.ImportRow(row) 来获取查询出来的值;
    这样就ok 了! 当然我的 select中的条件也是费了好大的劲才弄出来的! 哈哈!
    好了,到这!

    使用 DataSet 对象更新数据库中的数据。还可以使用 SqlCommand 对象直接在数据库中插入、更新和删除数据。

    加载 DataSet 后,就可以修改数据了。DataSet 将会跟踪这些更改。可将 DataSet 对象视为从数据库检索出并缓存于内存中的数据。首先要为DataAdapter(为数据适配器设置好Connection,以及SelectCommand、InsertCommand、UpdateCommand、DeleteCommand),对DataSet的修改,最终都要转化为这些Command的insert、delete、select和update操作

    (1)、select操作

       this.odbcDataAdapter1.SelectCommand.CommandText="select * from userinfo order by id";
       this.odbcDataAdapter1.Fill(this.dataSet1,"userinfo");
       DataColumn[] column=new DataColumn[]{this.dataSet1.Tables["userinfo"].Columns["id"]};
       this.dataSet1.Tables["userinfo"].PrimaryKey =column;//为表设置主键
       this.mydg.DataSource=this.dataSet1.Tables[0].DefaultView;
       this.button1.Enabled=false;
       Console.WriteLine(this.dataSet1.Tables[0].Rows.Count);//统计多少行
       Console.WriteLine(this.dataSet1.Tables[0].Rows[0][0]);//[行][列]

    (2)、insert操作

       System.Data.DataRow row=this.dataSet1.Tables["userinfo"].NewRow();//首先内存要有Table["userinfo"]存在
       row["id"]=this.textBox1.Text;
       row["userName"]=this.textBox2.Text;
       row["userPw"]=this.textBox3.Text;
       this.dataSet1.Tables["userinfo"].Rows.Add(row);//增加一行
       this.odbcDataAdapter1.Update(this.dataSet1,"userinfo");//调用odbcDataAdapter1中InsertCommand(InsertCommand在设计时要配置好connection和commandText)

    (3)、update操作

       DataRow row=this.dataSet1.Tables["userinfo"].Rows.Find("1");
       row.BeginEdit();
       row["username"]="xmddl";
       row["userpw"]="xmddl";
       row.EndEdit();
       this.odbcDataAdapter1.Update(this.dataSet1,"userinfo");

    (4)、delete操作,要完全删除一行,可使用 DataRow 对象的 Delete 方法。请注意,Rows 集合包含 RemoveRemoveAt 两个方法,它们似乎删除了行,但实际上只是将行从集合中移除。只有 Delete 方法才会将删除结果发回源数据库中。

       DataRow row=this.dataSet1.Tables["userinfo"].Rows.Find(cID);
       row.Delete();
       int i=this.odbcDataAdapter1.Update(this.dataSet1,"userinfo");

    可以使用 DataView 在基础表中添加、删除或修改数据行。通过设置 DataView 的三个布尔值属性之一,可以控制使用 DataView 修改基础表数据的能力。这些属性为 AllowNewAllowEditAllowDelete。默认情况下,它们设置为 true

    如果 AllowNewtrue,则可以使用 DataViewAddNew 方法来创建新的 DataRowView。请注意,在调用 DataRowViewEndEdit 方法之前,新行实际上不会添加到基础 DataTable 中。如果调用 DataRowViewCancelEdit 方法,则将丢弃新行。另请注意,一次只能编辑一个 DataRowView。如果在存在挂起行时调用 DataRowViewAddNewBeginEdit 方法,则会对该挂起行隐式调用 EndEdit。当调用 EndEdit 时,更改将应用于基础 DataTable,并且随后可以使用 DataTableDataSetDataRow 对象的 AcceptChangesRejectChanges 方法来提交或拒绝更改。如果 AllowNewfalse,则当调用 DataRowViewAddNew 方法时,将引发异常。

    如果 AllowEdittrue,可以通过 DataRowView 来修改 DataRow 的内容。您可以使用 DataRowView.EndEdit 确认对基础行的更改,或使用 DataRowView.CancelEdit 拒绝更改。请注意,一次只能编辑一行。如果在存在挂起行时调用 DataRowViewAddNewBeginEdit 方法,则将对挂起行隐式调用 EndEdit。当调用 EndEdit 时,建议更改将放置在基础 DataRowCurrent 行版本中,随后可以使用 DataTableDataSetDataRow 对象的 AcceptChangesRejectChanges 方法来提交或拒绝这些更改。如果 AllowEditfalse,则当试图修改 DataView 中的值时,将引发异常。

    当编辑现有 DataRowView 时,仍将引发基础 DataTable 的事件,并提供建议更改。请注意,如果对基础 DataRow 调用 EndEditCancelEdit,那么无论是否对 DataRowView 调用 EndEditCancelEdit,都将应用或取消挂起的更改。

    如果 AllowDeletetrue,则可以使用 DataViewDataRowView 对象的 Delete 方法删除 DataView 中的行,这些行也将从基础 DataTable 中删除。随后可以分别使用 AcceptChangesRejectChanges 来提交或拒绝删除。如果 AllowDeletefalse,当调用 DataViewDataRowViewDelete 方法时,将引发异常。

    以下代码示例禁用通过 DataView 删除行的功能,并使用 DataView 向基础表中添加新行。

    [C#]
    DataTable custTable = custDS.Tables["Customers"];
    DataView custView = custTable.DefaultView;
    custView.Sort = "CompanyName";

    custView.AllowDelete = false;

    DataRowView newDRV = custView.AddNew();
    newDRV["CustomerID"] = "ABCDE";
    newDRV["CompanyName"] = "ABC Products";
    newDRV.EndEdit();

     

    DataView 公开可枚举的 DataRowView 对象集合。DataRowView 对象将值公开为 object 数组,这些数组按基础表中列的名称或序号引用来编制索引。可以使用 DataRowViewRow 属性来访问由 DataRowView 公开的 DataRow

    当使用 DataRowView 查看值时,DataViewRowStateFilter 属性将确定公开基础 DataRow 的哪一个行版本。
    [C#]
      DataView catView = new DataView(catDS.Tables["Categories"]);

      Console.WriteLine("Current Values:");

      WriteView(catView);

      Console.WriteLine("Original Values:");

      catView.RowStateFilter = DataViewRowState.ModifiedOriginal;

      WriteView(catView);

    public static void WriteView(DataView myView)
    {
      foreach (DataRowView myDRV in myView)
      {
        for (int i = 0; i < myView.Table.Columns.Count; i++)
          Console.Write(myDRV[i] + "/t");
        Console.WriteLine();
      }
    }

    展开全文
  • Dataset-源码

    2021-03-27 19:55:36
    Dataset
  • exploration dataset

    2020-03-08 21:23:15
    exploration dataset exploration dataset exploration dataset exploration dataset
  • Pytorch(五)入门:DataLoader 和 Dataset

    万次阅读 多人点赞 2018-09-22 09:57:55
    DataLoader 和 Dataset 构建模型的基本方法,我们了解了。 接下来,我们就要弄明白怎么对数据进行预处理,然后加载数据,我们以前手动加载数据的方式,在数据量小的时候,并没有太大问题,但是到了大数据量,我们...

    DataLoader 和 Dataset

    构建模型的基本方法,我们了解了。
    接下来,我们就要弄明白怎么对数据进行预处理,然后加载数据,我们以前手动加载数据的方式,在数据量小的时候,并没有太大问题,但是到了大数据量,我们需要使用 shuffle, 分割成mini-batch 等操作的时候,我们可以使用PyTorch的API快速地完成这些操作。

    在这里插入图片描述

    Dataset是一个包装类,用来将数据包装为Dataset类,然后传入DataLoader中,我们再使用DataLoader这个类来更加快捷的对数据进行操作。

    DataLoader是一个比较重要的类,它为我们提供的常用操作有:batch_size(每个batch的大小), shuffle(是否进行shuffle操作), num_workers(加载数据的时候使用几个子进程)

    现在,我们先展示直接使用 TensorDataset 来将数据包装成Dataset类

    在这里插入图片描述

    这里差个题外话,不知道为什么,出现这个错误,

     torch_dataset = Data.TensorDataset(data_tensor=x, target_tensor=y)
    TypeError: __init__() got an unexpected keyword argument 'data_tensor'
    

    但是,改成deal_dataset = TensorDataset(x_data, y_data)这样就OK了。

    在这里插入图片描述

    接下来,我们来继承 Dataset类 ,写一个将数据处理成DataLoader的类。

    当我们集成了一个 Dataset类之后,我们需要重写 len 方法,该方法提供了dataset的大小; getitem 方法, 该方法支持从 0 到 len(self)的索引

    class DealDataset(Dataset):
        """
            下载数据、初始化数据,都可以在这里完成
        """
        def __init__(self):
            xy = np.loadtxt('../dataSet/diabetes.csv.gz', delimiter=',', dtype=np.float32) # 使用numpy读取数据
            self.x_data = torch.from_numpy(xy[:, 0:-1])
            self.y_data = torch.from_numpy(xy[:, [-1]])
            self.len = xy.shape[0]
        
        def __getitem__(self, index):
            return self.x_data[index], self.y_data[index]
    
        def __len__(self):
            return self.len
    
    # 实例化这个类,然后我们就得到了Dataset类型的数据,记下来就将这个类传给DataLoader,就可以了。    
    dealDataset = DealDataset()
    
    train_loader2 = DataLoader(dataset=dealDataset,
                              batch_size=32,
                              shuffle=True)
    
    
    for epoch in range(2):
        for i, data in enumerate(train_loader2):
            # 将数据从 train_loader 中读出来,一次读取的样本数是32个
            inputs, labels = data
    
            # 将这些数据转换成Variable类型
            inputs, labels = Variable(inputs), Variable(labels)
    
            # 接下来就是跑模型的环节了,我们这里使用print来代替
            print("epoch:", epoch, "的第" , i, "个inputs", inputs.data.size(), "labels", labels.data.size())
    

    在这里插入图片描述

    torchvision 包的介绍

    torchvision 是PyTorch中专门用来处理图像的库,PyTorch官网的安装教程,也会让你安装上这个包。

    这个包中有四个大类。

    torchvision.datasets

    torchvision.models

    torchvision.transforms

    torchvision.utils

    这里我们主要介绍前三个。

    torchvision.datasets

    torchvision.datasets 是用来进行数据加载的,PyTorch团队在这个包中帮我们提前处理好了很多很多图片数据集。

    • MNISTCOCO
    • Captions
    • Detection
    • LSUN
    • ImageFolder
    • Imagenet-12
    • CIFAR
    • STL10
    • SVHN
    • PhotoTour

    我们可以直接使用,示例如下:
    在这里插入图片描述

    torchvision.models

    torchvision.models 中为我们提供了已经训练好的模型,让我们可以加载之后,直接使用。

    torchvision.models模块的 子模块中包含以下模型结构。

    • AlexNet
    • VGG
    • ResNet
    • SqueezeNet
    • DenseNet

    我们可以直接使用如下代码来快速创建一个权重随机初始化的模型

    import torchvision.models as models
    resnet18 = models.resnet18()
    alexnet = models.alexnet()
    squeezenet = models.squeezenet1_0()
    densenet = models.densenet_161()
    

    也可以通过使用 pretrained=True 来加载一个别人预训练好的模型

    import torchvision.models as models
    resnet18 = models.resnet18(pretrained=True)
    alexnet = models.alexnet(pretrained=True)
    
    import torchvision.models as models
    # 加载一个 resnet18 模型
    resnet18 = models.resnet18()
    print(resnet18)
    
    import torchvision.models as models
    resnet18 = models.resnet18(pretrained=True) # 加载一个已经预训练好的模型, 需要下载一段时间...
    

    在这里插入图片描述

    # 我们这里还是对MNIST进行处理,初始的MNIST是 28 * 28,我们把它处理成 96 * 96 的torch.Tensor的格式
    from torchvision import transforms as transforms
    import torchvision
    from torch.utils.data import DataLoader
    
    # 图像预处理步骤
    transform = transforms.Compose([
        transforms.Resize(96), # 缩放到 96 * 96 大小
        transforms.ToTensor(),
        transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) # 归一化
    ])
    
    DOWNLOAD = True
    BATCH_SIZE = 32
    
    train_dataset = torchvision.datasets.MNIST(root='./data/', train=True, transform=transform, download=DOWNLOAD)
    
    
    train_loader = DataLoader(dataset=train_dataset,
                              batch_size=BATCH_SIZE,
                              shuffle=True)
    
    print(len(train_dataset))
    print(len(train_loader))
    

    以上代码参考:https://github.com/LianHaiMiao/pytorch-lesson-zh/

    展开全文
  • 主要介绍了tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 主要介绍了浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Mall dataset

    2018-02-24 16:11:43
    基于多列卷积神经网络的单图像人群计数的Mall dataset 数据集
  • AnyDataset Anydataset核心模块。 Anydataset是PHP中不可知的数据源抽象层。 产品特点 使用相同的界面访问不同的数据源。 可迭代的结果 将结果转换为数组 当前实施 {:。表} 目的 数据源 读 写 参考 ...
  • DataSet应用

    2012-04-20 11:08:06
    DataSet应用
  • SegNet+dataset

    2018-06-04 17:18:21
    SegNet+dataset SegNet+dataset SegNet+dataset SegNet+dataset
  • Facebook bAbI dataset

    2017-03-06 14:40:37
    Facebook bAbI dataset Facebook bAbI dataset Facebook bAbI dataset Facebook bAbI dataset Facebook bAbI dataset
  • DataSet对象

    2014-03-24 18:09:00
    介绍 DataSet对象例子,亲自运行过,没有问题初学者参考
  • ring_dataset_源码

    2021-10-02 13:54:30
    A popular dataset used in cluster named ring dataset.
  • pytorch Dataset and Datasetloader

    千次阅读 2019-09-02 17:00:17
    在使用pytorch构架数据集的时候,使用torch.utils.data.Dataset和torch.utils.data.DataLoader会大大提高效率,且基本能满足需求。 这里主要记录个人对于torch.utils.data.Dataset和torch.utils.data.DataLoader的...

    在使用pytorch构架数据集的时候,使用torch.utils.data.Dataset和torch.utils.data.DataLoader会大大提高效率,且基本能满足需求。
    这里主要记录个人对于torch.utils.data.Dataset和torch.utils.data.DataLoader的理解

    1. torch.utils.data.Dataset:
    pytorch对于Dataset的原始定义是比较简单的:

    而我们在定义自己的数据集时,是继承这个类再进行的定义的,并且继承后一定要重写 __len__(self)和__getitem__(self, index)这两个函数,例如:

    我认为这里最重要的就是我画横线的三个函数,也是自己新建的数据库中必须包含的三个函数。
    __len__(): 这个比较还理解,返回文件的个数;
    __init__(): 初始化函数,init里包含的性质也就是自己新建的数据集包含的性质;
    __getitem__():  我认为这个函数是Dataset类最重要的一个函数。因为他决定了你之后用torch.utils.data.DataLoader之后返回的内容。开始我一直不知道这个函数在什么时候会被调用,因为在类内部找不到调用这个函数的地方,而它又不像__init__()会被默认调用。原来是在后面使用torch.utils.data.DataLoader时才会调用这个函数。后面说再详细点。
    其他函数可以根据需要再常规定义。

     

    2. torch.utils.data.DataLoader
    Dataloader的定义复杂一些,函数也更多。
    |
    在使用dataloader的时候:


    在运行到画红线的地方会进入到Dataset的__getitem__()里面,返回的是一个迭代器,这个迭代器的内容是N个batch_size的数据,所以用 in 来得到各个batch的数据。
    在读取数据的过程中,如果Dataset写不好,生成这个迭代器的过程是很费时间的,会减慢训练速度。

    展开全文
  • 循环遍历dataset

    2016-04-21 15:19:02
    循环遍历dataset
  • Dataset与Datatable(Dataset入门)

    千次阅读 2019-04-19 01:38:23
    可以把DataSet当成内存中的数据库或者数据容器,DataSet是不依赖于数据库的独立数据集合。当数据库中的数据填充到Dataset之后,即使断开与数据库的连接,或者关闭数据库,DataSet依然是可用的。Dataset是一种内存...
  • dataset.repeat就是俗称epoch,但在tf中与dataset.shuffle的使用顺序可能会导致个epoch的混合 dataset.shuffle就是说维持一个buffer size 大小的 shuffle buffer,图中所需的每个样本从shuffle ...
  • Python中 from dataSet import DataSet

    千次阅读 2019-02-15 23:18:50
    Python中 from dataSet import DataSet python:from dataSet import DataSet 新的不能再新的新手小白,在跑大神代码中遇到了语句 from dataSet import DataSet 可是死活找不到这个包和模块。大神当时用的是python...
  • Dynamic hand dataset

    2017-12-11 10:30:21
    Submitted a paper to ICME2018, the dataset is upload in this webpage.The dataset includes 8 types of dynamic hand gestures, Grab, Expand, Swipe Right, Swipe Left, Tap, Pinch, Clockwise and Counter ...
  • DataSet详解

    千次阅读 2019-07-25 07:43:28
    DataSet 数据集,DataTable是内存中的一个关系数据表,可以独立创建使用,也可以作为DataSet的一个成员使用! 如何将DataTable作为DataSet的一个成员使用: 首先创建一个DataTable对象,其次通过使用Add方法将其添加...
  • training dataset的作用:training dataset,[3]that is a set of examples used to fit the parameters (e.g. weights of connections between neurons inartificial neural networks) of the model.[4]The model (e...
  • dataSet转json

    2014-05-05 09:22:55
    dataSet转json,json转dataset
  • 实现labelme批量json_to_dataset方法

    万次阅读 多人点赞 2018-07-19 10:27:44
    labelme可以帮助我们快速的实现Mask-RCNN中数据集json文件的生成,然而还需要我们进一步的将json转成dataset,可以直接在cmd中执行labelme_json_to_dataset.exe C:\Users\Administrator\Desktop\total\1.json(路径)...
  • wine-dataset

    2017-11-15 15:47:47
    机器学习中的wine-dataset数据集 机器学习中的wine-dataset数据集
  • DataSet基本用法和ComBox绑定DataSet数据

    千次阅读 2018-07-25 10:57:39
    DataSet ds = new DataSet(); DataSet ds = new DataSet("DataSetName"); 2、用数据集填充DataSet 使用DataAdapter对象的Fill()方法给他填充数据 (1) DataSet ds = new DataSet(); SqlDataAdapter...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 366,196
精华内容 146,478
关键字:

dataset