Keras一些常用的API总结

Posted liuzhan709

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keras一些常用的API总结相关的知识,希望对你有一定的参考价值。

使用了一段时间的tensorflow,并且花费了比较大的精力学习了《实战google深度学习框架》这本书,发现纯粹使用tensorflow是比较繁琐的,所以抽时间学一下keras的内容,以后使用tensorflow和keras混编的方式做实验,在易用性和灵活性两方面取得一些折中,学习了tensorflow和基础的机器学习知识后,熟悉keras的难度并非很大。

# Dense表示全连接层,unit是神经元数目,一般来说仅对参数矩阵进行正则化,按照机器学习的传统,bias是不惩罚的,另外,此处的activity_regularizer很奇怪,为什么要添加输出惩罚,后续理解后添加,参数约束尚未学习,待更新
keras.layers.core.Dense(units, activation=None, use_bias=True, kernel_initializer=‘glorot_uniform‘, bias_initializer=‘zeros‘, kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
#激活函数,tanh,sigmoid,relu等
keras.layers.core.Activation(activation)
#一定程度上可以减轻过拟合,目前见过的基本上只给出一个rate就行了
keras.layers.core.Dropout(rate, noise_shape=None, seed=None)
#平铺,lenet5模型中有此操作,实际上reshape可以代替这个层
keras.layers.core.Flatten()
#注意keras中往往不给出batch的大小,所以此处的target_shape往往是三维数据Height,Width,Channel
keras.layers.core.Reshape(target_shape)
#filters为卷积核个数,也就是输出通道数,kernel_size提供HW即可,比如3x3,dilation_rate和空洞卷积有关,目前还没有学完,待更新
keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding=‘valid‘, data_format=None, dilation_rate=(1, 1), activation=None, use_bias=True, kernel_initializer=‘glorot_uniform‘, bias_initializer=‘zeros‘, kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
#转置卷积,又叫反卷积或者分数滑动卷积,可以认为是输入先每两个像素之间补stride-1个0.然后根据情况在外圈补0,之后正常卷积的过程,FCN等许多论文中都使用了反卷积操作
keras.layers.convolutional.Conv2DTranspose(filters, kernel_size, strides=(1, 1), padding=‘valid‘, data_format=None, activation=None, use_bias=True, kernel_initializer=‘glorot_uniform‘, bias_initializer=‘zeros‘, kernel_regularizer=None, bias_regularizer=None, activity_regularizer=None, kernel_constraint=None, bias_constraint=None)
#最大池化层,基本上都是用2x2池化,毕竟2x2池化已经丢失了75%信息了
keras.layers.pooling.MaxPooling2D(pool_size=(2, 2), strides=None, padding=‘valid‘, data_format=None)
#平均池化层,几乎没怎么看到,绝大多数还是最大池化层
keras.layers.pooling.AveragePooling2D(pool_size=(2, 2), strides=None, padding=‘valid‘, data_format=None)
#损失函数,我目前经常看到的是softmax交叉熵和最小方差损失,Hinge损失目前还没用过,其余损失函数没见过,暂时不看
categorical_crossentropy,mse,hinge
#优化器,使用optimizer.SGD()类似用法获取一个优化器,很汗颜一直没有读这些算法的实现,明天补,明天会更新算法原理
SGD,RMSprop,Adagrad,Adadelta,Adam,Adamax,Nadam,TFOptimizer
#编译model.complie,我猜想是类似tensorflow中sess.run(tf.global_variables_initializer())操作,激活计算图用的
#开始进行训练,给定训练集输入,输出,批的大小batch,训练的轮数epochs,callback回调函数列表,给与了我们进行一些自定义过程的自由,validation_split给出验证集比例
#一般来说训练集:验证集:测试集=6:2:2是比较好的,此处给0.33就可以了,默认shuffle,打乱数据,sample_weight暂时不太懂,待更新
fit(self, x, y, batch_size=32, epochs=10, verbose=1, callbacks=None, validation_split=0.0, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0)
#看一看模型在测试集的表现
score=evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None)
# 进行一次前向传播完成一次预测
predict(self, x, batch_size=32, verbose=0)

以上是关于Keras一些常用的API总结的主要内容,如果未能解决你的问题,请参考以下文章

Java习惯用法总结

# Java 常用代码片段

# Java 常用代码片段

IOS开发-OC学习-常用功能代码片段整理

深度学习常用数据集 API

swift常用代码片段