在Keras中有两种深度学习的模型:序列模型(Sequential)和通用模型(Model)。差异在于不同的拓扑结构。
序列模型 Sequential
序列模型各层之间是依次顺序的线性关系,模型结构通过一个列表来制定。
from keras.models import Sequential from keras.layers import Dense, Activation layers = [Dense(32, input_shape = (784,)), Activation('relu'), Dense(10), Activation('softmax')] model = Sequential(layers)
或者逐层添加网络结构
from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential() model.add(Dense(32, input_shape = (784,))) model.add(Activation('relu')) model.add(Dense(10)) model.add(Activation('softmax'))
通用模型Model
通用模型可以设计非常复杂、任意拓扑结构的神经网络,例如有向无环网络、共享层网络等。相比于序列模型只能依次线性逐层添加,通用模型能够比较灵活地构造网络结构,设定各层级的关系。
from keras.layers import Input, Dense from keras.models import Model # 定义输入层,确定输入维度 input = input(shape = (784, )) # 2个隐含层,每个都有64个神经元,使用relu激活函数,且由上一层作为参数 x = Dense(64, activation='relu')(input) x = Dense(64, activation='relu')(x) # 输出层 y = Dense(10, activation='softmax')(x) # 定义模型,指定输入输出 model = Model(input=input, output=y) # 编译模型,指定优化器,损失函数,度量 model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) # 模型拟合,即训练 model.fit(data, labels)
补充知识:keras神经网络,Sequential序贯模型(二分类、多分类)
1 Sequential参数
model = Sequential() model.add(Dense(32, input_dim=78))
解释:
Sequential 的第一个关于输入数据shape的参数,后边的各个层则可以自动推到出中间数据的shape
01 传递一个input_shape的关键字参数给第一层,如果填入None则表示此位置可能是任何正整数。数据的batch大小不应包含在其中。
02 有些2D层,如Dense,支持通过指定其输入维度input_dim来隐含的指定输入数据shape,是一个Int类型的数据。一些3D的时域层支持通过参数input_dim和input_length来指定输入shape。
03 如果你需要为输入指定一个固定大小的batch_size(常用于stateful RNN网络),可以传递batch_size参数到一个层中,例如你想指定输入张量的batch大小是32,数据shape是(6,8),则你需要传递batch_size=32和input_shape=(6,8)。
2、compile配置学习过程
model.compile(optimizer='rmspropy',loss='categorical_crossentropy',metrics=['accuracy'])
01 优化器optimizer:
该参数可指定为已预定义的优化器名,如rmsprop、adagrad,或一个Optimizer类的对象。
02 损失函数loss:
该参数为模型试图最小化的目标函数,它可为预定义的损失函数名,如categorical_crossentropy、mse,也可以为一个损失函数。
03 指标列表metrics:
对分类问题,我们一般将该列表设置为metrics=['accuracy']。指标可以是一个预定义指标的名字,也可以是一个用户定制的函数.指标函数应该返回单个张量,或一个完成metric_name - > metric_value映射的字典.
3、案例
01 基于多层感知器Softmax多分类(图片)
from keras.models import Sequential from keras.layers import Dense,Dropout,Activation from keras.optimizers import SGD import keras #abd # Generate dummy data import numpy as np x_train=np.random.random((1000,20)) y_train=keras.utils.to_categorical(np.random.randint(10,size=(1000,1)),num_classes=10) x_test=np.random.random((100,20)) y_test=keras.utils.to_categorical(np.random.randint(10,size=(100,1)),num_classes=10) model=Sequential() # Dense(64) is a fully-connected Layer with 64 hidden units. # in the first layer ,you must specify the expected input data shape; # here,20-dimensional vectors. model.add(Dense(64,activation='relu',input_dim=20)) model.add(Dropout(0.5)) model.add(Dense(64,activation='relu')) model.add(Dropout(0.5)) model.add(Dense(10,activation='softmax')) sgd=SGD(lr=0.01,decay=1e-6,momentum=0.9,nesterov=True) model.compile(loss='categorical_crossentropy', # 损失函数 optimizer=sgd, # metrics=['accuracy'] # 精确度,评估模型在训练和测试时的网络性能的指标。 ) model.fit(x_train,y_train,epochs=20,batch_size=128) # batch_size 整数,指定进行梯度下降时每个批次包含的样本数训练时一个批次的样本 # 会被计算一次梯度下降,使目标函数进行一步优化 # epochs;训练20次,整数,训练终止时候的epoch值 score=model.evaluate(x_test,y_test,batch_size=128) # 评估函数 ,本函数返回一个测试误差的标量值(如果模型没有其他评价指标)。
02 MLP的二分类
import numpy as np from keras.models import Sequential from keras.layers import Dense,Dropout x_train=np.random.random((1000,20)) y_train=keras.utils.to_categorical(np.random.randint(10,size=(1000,1)),num_classes=10) x_test=np.random.random((100,20)) y_test=keras.utils.to_categorical(np.random.randint(10,size=(100,1)),num_classes=10) model=Sequential() model.add(Dense(64,input_dim=20,activation='relu')) model.add(Dropout(0.5)) model.add(Dense(64,activation='relu')) model.add(Dropout(0.5)) model.add(Dense(1,activation='sigmoid')) model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy']) model.fit(x_train,y_train, epoches=20, batch_size=128) score=model.evaluate(x_test,y_test,batch_size=128)
相关详细说明见官方文档:https://keras-cn.readthedocs.io/en/latest/getting_started/sequential_model/
以上这篇Keras中的两种模型:Sequential和Model用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]