创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
企业建站必须是能够以充分展现企业形象为主要目的,是企业文化与产品对外扩展宣传的重要窗口,一个合格的网站不仅仅能为公司带来巨大的互联网上的收集和信息发布平台,成都创新互联公司面向各种领域:成都阳光房等成都网站设计、全网营销推广解决方案、网站设计等建站排名服务。这篇文章主要介绍keras提供了三种定义模型方式分别是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
前言
一、keras提供了三种定义模型的方式
1. 序列式(Sequential) API
序贯(sequential)API允许你为大多数问题逐层堆叠创建模型。虽然说对很多的应用来说,这样的一个手法很简单也解决了很多深度学习网络结构的构建,但是它也有限制-它不允许你创建模型有共享层或有多个输入或输出的网络。
2. 函数式(Functional) API
Keras函数式(functional)API为构建网络模型提供了更为灵活的方式。
它允许你定义多个输入或输出模型以及共享图层的模型。除此之外,它允许你定义动态(ad-hoc)的非周期性(acyclic)网络图。
模型是通过创建层的实例(layer instances)并将它们直接相互连接成对来定义的,然后定义一个模型(model)来指定那些层是要作为这个模型的输入和输出。
3.子类(Subclassing) API
补充知识:keras pytorch 构建模型对比
使用CIFAR10数据集,用三种框架构建Residual_Network作为例子,比较框架间的异同。
数据集格式
pytorch的数据集格式
import torch import torch.nn as nn import torchvision # Download and construct CIFAR-10 dataset. train_dataset = torchvision.datasets.CIFAR10(root='../../data/', train=True, download=True) # Fetch one data pair (read data from disk). image, label = train_dataset[0] print (image.size()) # torch.Size([3, 32, 32]) print (label) # 6 print (train_dataset.data.shape) # (50000, 32, 32, 3) # type(train_dataset.targets)==list print (len(train_dataset.targets)) # 50000 # Data loader (this provides queues and threads in a very simple way). train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True) """ # 演示DataLoader返回的数据结构 # When iteration starts, queue and thread start to load data from files. data_iter = iter(train_loader) # Mini-batch images and labels. images, labels = data_iter.next() print(images.shape) # torch.Size([100, 3, 32, 32]) print(labels.shape) # torch.Size([100]) 可见经过DataLoader后,labels由list变成了pytorch内置的tensor格式 """ # 一般使用的话是下面这种 # Actual usage of the data loader is as below. for images, labels in train_loader: # Training code should be written here. pass