进来看了看keras, 比tf友好的多啊,总结下:
Keras有两种类型的模型,顺序模型(Sequential)和泛型模型(Model)
首先比较简单的顺序型
Sequential模型接口
代码示例
model = Sequential()
model.add(Dense(32, input_shape=(500,)))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit( x, y, batch_size=32, nb_epoch=10, verbose=1, callbacks=[], validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None)
score = model.evaluate(x_test, y_test, batch_size=32)
model.predict(x, batch_size=32, verbose=0)
model.predict_classes( x, batch_size=32, verbose=1)
model.predict_proba(x, batch_size=32, verbose=1)
Sequential() 代表类的初始化;
Dense() 代表全连接层,参数32表示本层有32个神经元,然后接relu激活层,由于是第一层,计算机不知道应该是以多少维增加,因此,后面添加输入维度数100。这一层需要训练100*32+32个参数。
model.add() 相当于把模型一层层拼接起来。
model.compile()函数中输入优化器,损失函数等信息
model.fit()中传入需要训练的数据x,y以及训练的批次等信息,开始训练
model.evaluate()用来评估模型的误差函数的返回值是预测值的numpy array
model.predict_classes:本函数按batch产生输入数据的类别预测结果;
model.predict_proba:本函数按batch产生输入数据属于各个类别的概率
model模型接口
函数式模型基本属性与训练流程
一般需要:
1、model.layers,添加层信息;
2、model.compile,模型训练的BP模式设置;
3、model.fit,模型训练参数设置 + 训练;
4、evaluate,模型评估;
5、predict 模型预测
from keras.models import Model
from keras.layers import Input, Dense
a = Input(shape=(32,))
b = Dense(32)(a)
model = Model(input=a, output=b)
model.compile(optimizer, loss, metrics=[], loss_weights=None, sample_weight_mode=None)
model.fit(x, y, batch_size=32, nb_epoch=10, verbose=1, callbacks=[], validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None)
model.evaluate(x, y, batch_size=32, verbose=1, sample_weight=None)
model.predict(x, batch_size=32, verbose=0)
例子
from keras.layers import Input, Dense
from keras.models import Model
# This returns a tensor
inputs = Input(shape=(784,))
# a layer instance is callable on a tensor, and returns a tensor
x = Dense(64, activation='relu')(inputs)
# 输入inputs,输出x
# (inputs)代表输入
x = Dense(64, activation='relu')(x)
# 输入x,输出x
predictions = Dense(10, activation='softmax')(x)
# 输入x,输出分类
# This creates a model that includes
# the Input layer and three Dense layers
model = Model(inputs=inputs, outputs=predictions)
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(data, labels) # starts training