深入理解tensorflowTensorFlow技术帖TensorFlow

Sequential模型

2018-02-02  本文已影响29人  Liam_ml

序贯模型是多个网络层的线性堆叠,可以通过向sequential模型传递一个layer的list来构造该模型:

from keras.models import Sequential
from keras.layers import Dense,Activation

model=Sequential([Dense(32,unitis=784),Activation('relu'),Dense(10),Activation('softmax')])

也可以通过.add()一个一个添加

model=Sequential()
model.add(Dense(32,input_shape=(784,))
model.add(Activation('relu'))

指定输入数据的shape

模型需要知道输入数据的shape,因此,sequential的第一层就需要接受一个关于输入数据shape的参数,后面的各个层则可以自动的推导出中间数据的shape,因此不需要为每一层指定,(第一层一定要指定),有几个方法指定第一层的shape

编译

在训练模型之前,我们需要通过compile来对学习过程进行配置,compile接受三个参数,

# For a multi-class classification problem
model.compile(optimizer="rmsprop",loss='categorical_crossentropy',metrics=['accuracy'])

# For a binary classification problem
model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy'])


# For a mean squared error regression problem
model.compile(optimizer='rmsprop',loss='mse')

# 自定义的metrics
import keras.backend as k
def mean_pred(y_true,y_pred):
    return(k.mean(y_pred))

model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['accuracy',mean_pred])

训练

keras一般用Numpy数组作为输入数据和标签的数据类型。训练模型一般使用fit函数

model=Senquential()
model.add(Dense(32,activation='relu',input_dim=100))
model.add(Dense(1,activation='sigmod',))
model.compile(optimizer='rmsprop',loss='binary_crossentropy',metrics=['acuracy'])
# 生成哑变量
import numpy as np
data=np.random.random((1000,100))
labels=np.random.randint(2,size=(1000,1))

# train model
model.fit(data,lables,epochs=10,batch_size=32)

# 10 classes
model=Sequential()
model.add(Dense(32,activation='relu',input_dim=100))
model.add(Dense(10,activation='softmax'))
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['accuracy'])

#  create dummy data
import numpy as np
data=np.random.random((1000,100))
labels=np.random
上一篇下一篇

猜你喜欢

热点阅读