使用Keras深度学习进行图层计数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Keras深度学习进行图层计数相关的知识,希望对你有一定的参考价值。
我正在研究我的第一个深度学习项目,用卷积神经网络计算图像中的图层。
在解决了大量错误之后,我终于可以训练我的模型了。但是,我的准确率为0;在第二纪元之后它就停止了,因为它没有学到任何东西。
输入将是1200 x 100大小的图像,输出将是整数。
如果有人可以查看我的模型,可以提出建议。那将是非常棒的。
谢谢。
from keras.layers import Reshape, Conv2D, MaxPooling2D, Flatten
model = Sequential()
model.add(Convolution2D(32, 5, 5, activation='relu', input_shape=(1,1200,100)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(64, 5, 5, activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(1, activation='relu'))
batch_size = 1
epochs = 10
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(sgd, loss='poisson', metrics=['accuracy'])
earlyStopping=keras.callbacks.EarlyStopping(monitor='val_loss', patience=0, verbose=0, mode='auto')
history = model.fit(xtrain, ytrain, batch_size=batch_size, nb_epoch=epochs, validation_data=validation, callbacks=[earlyStopping], verbose=1)
答案
批评有这么多东西?
- 1200 * 100大小的图像(我认为它们是像素)对于CNN而言是如此之大。在ImageNet比赛中,图像全部为224 * 224,299 * 299。你为什么不在最后一层使用线性或sigmoid激活?
- 您是否将输出在0和1之间标准化?将其标准化,只需将输出除以输出的最大值,并在训练/预测后使用CNN时乘以相同的数字。
- 不要将它与小数据一起使用,不必要:earlyStopping = keras.callbacks.EarlyStopping(monitor ='val_loss',耐心= 0,详细= 0,模式='自动')
- 使用Adam将优化器降低到0.001。
你的数据实际上并不大,它应该可以工作,可能你的问题在于输出/输入的标准化,检查它们。
以上是关于使用Keras深度学习进行图层计数的主要内容,如果未能解决你的问题,请参考以下文章
Keras深度学习实战——使用深度Q学习进行SpaceInvaders游戏
学习Keras:《Keras快速上手基于Python的深度学习实战》PDF代码+mobi