您的位置:首页 > 其它

keras学习(2)

2015-06-03 13:38 483 查看
1.目标函数

目标函数的使用

一个目标函数(损失函数或优化函数)是编译一个model需要的参数。

model.compile(loss='mean_squared_error', optimizer='sgd')


可以通过传递现有对象的名称或者Theano符号函数返回一个scalar,需要以下的两个参数:

y_true: True 标签. Theano tensor.

y_pred: Predictions. Theano tensor .与y_true相同的shape.

具体函数的实例,可以参考keras.

常用的目标函数

mean_squared_error / mse 均方差

mean_absolute_error / mae 平均绝对误差

squared_hinge

hinge

binary_crossentropy: 就是 logloss.

categorical_crossentropy: 就是multiclass logloss. 注意:使用这个目标函数需要设置label为二进制数组的形式。
(nb_samples, nb_classes)


2.模型

也就是线性叠加的网络层。

model = keras.models.Sequential()


方法:

add(layer): 往模型中添加一个层.

compile(optimizer, loss, class_mode=”categorical”):

参数:

optimizer: str (优化函数的名称) 或者优化对象.参考 optimizers.

loss: str (目标函数的名称) 或者目标函数. 参考 objectives.

class_mode: 值为”categorical”, “binary”. 用于计算分类正确率或调用 predict_classes方法.

theano_mode: A theano.compile.mode.Mode (reference).

fit(X, y, batch_size=128, nb_epoch=100, verbose=1, validation_split=0., validation_data =None, shuffle=True, show_accuracy=False): 固定的 epochs训练一个模型.

返回值:记录在字典中的训练成功的损失值,也可是验证损失值或精确度(适用的话).

参数:

X: data.

y: labels.

batch_size: int. 每一次迭代的样本数目.

nb_epoch: int.

verbose: 0 表示不更新日志, 1 更新日志, 2 每个epoch一个进度行.

validation_split: float (0 < x < 1).验证集的一部分.

validation_data: tuple (X, y) 数据作为验证集. 将加载validation_split.

shuffle: boolean. 每个 epoch是否随机抽取样本.

show_accuracy: boolean. 每个epoch是否显示分类正确率.

evaluate(X, y, batch_size=128, show_accuracy=False, verbose=1): 通过验证集的数据显示model的性能.

Return: 返回数据的损失值.

Arguments: 和上面fit函数定义相同. verbose用作二进制标识(进度条或无).

predict(X, batch_size=128, verbose=1):

Return: 测试数据的预测数组.

Arguments: 和fit一样.

predict_classes(X, batch_size=128, verbose=1): 返回test data的类预测数组.

Return: 测试数据的标签数组.

Arguments: 和fit一样.

train(X, y, accuracy=False): 一个batch的梯度更新. if accuracy==False, return tuple (loss_on_batch, accuracy_on_batch). Else, return loss_on_batch.

Return: 损失值, 或者
tuple (loss, accuracy)
if
accuracy=True.


test(X, y, accuracy=False): 一个batch的性能计算. if accuracy==False, return tuple (loss_on_batch, accuracy_on_batch). Else, return loss_on_batch.

Return: 损失值, 或
tuple (loss, accuracy)
if
accuracy=True
.

save_weights(fname):保存所有层的权值到HDF5文件中.

load_weights(fname): 加载保存在save_weights中模型权值. 只能加载相同结构的文件.

3.实例:

from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD

model = Sequential()
model.add(Dense(64, 2, init='uniform'))
model.add(Activation('softmax'))

model.compile(loss='mse', optimizer='sgd')

'''
Demonstration of verbose modes 1 and 2
'''
model.fit(X_train, y_train, nb_epoch=3, batch_size=16, verbose=1)

model.fit(X_train, y_train, nb_epoch=3, batch_size=16, verbose=2)

'''
Demonstration of show_accuracy
'''
model.fit(X_train, y_train, nb_epoch=3, batch_size=16, verbose=2, show_accuracy=True)

'''
Demonstration of validation_split
'''
model.fit(X_train, y_train, nb_epoch=3, batch_size=16, validation_split=0.1, show_accuracy=True, verbose=1)


结果参考:models
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  keras