培训和测试准确性相同

问题描述 投票:-1回答:3

我正在构建一个将数据分类为7的模型。

输入包括从GIS数据集中提取的7个波段。我正在拍摄一个乐队的一个像素,然后使用监督分类方法训练我的神经网络。

有两个问题:

  • 第一个是我的训练准确度在每个时期都是相同的
  • 第二个是训练和测试精度在每个时期都相同。

我尝试过更改各种模型,优化器和激活功能。

from keras.layers import Dense,Input,Dropout
from keras.models import Model
from keras.models import load_model
from keras.optimizers import Adam
from sklearn.utils import shuffle

import numpy as np
from matplotlib import pyplot as plt
import scipy.io as sci
import time

mat=sci.loadmat('landsat/dataset_beta.mat')
X1=mat.get('x')
Y1=mat.get('y')
X1, Y1 = shuffle(X1, Y1)

m=int(85*X1.shape[0]/100)
bands=7
print(m)

X_train=X1[0:m,0:bands]
Y_train=Y1[0:m]
X_test=X1[m:X1.shape[0],0:bands]
Y_test=Y1[m:X1.shape[0]]


print('Total training examples: '+str(X_train.shape[0]))
print('Total test examples: '+str(X_test.shape[0]))
print('X_train dimensions: '+str(X_train.shape))
print('Y_train dimensions: '+str(Y_train.shape))
print('X_test dimensions: '+str(X_test.shape))
print('Y_test dimensions: '+str(Y_test.shape))

inp=Input(shape=(bands,))
layer=Dense(11,activation='sigmoid')(inp)
#layer=Dropout(0.2)(layer)
layer=Dense(22,activation='sigmoid')(layer)
layer=Dense(33,activation='sigmoid')(layer)
layer=Dense(44,activation='sigmoid')(layer)
layer=Dense(55,activation='sigmoid')(layer)
layer=Dense(66,activation='sigmoid')(layer)
layer=Dense(77,activation='sigmoid')(layer)
layer=Dense(88,activation='sigmoid')(layer)
layer=Dense(99,activation='sigmoid')(layer)
layer=Dense(110,activation='sigmoid')(layer)
layer=Dense(110,activation='sigmoid')(layer)
layer=Dense(99,activation='sigmoid')(layer)
layer=Dense(88,activation='sigmoid')(layer)
layer=Dense(77,activation='sigmoid')(layer)
layer=Dense(66,activation='sigmoid')(layer)
layer=Dense(55,activation='sigmoid')(layer)
layer=Dense(44,activation='sigmoid')(layer)
layer=Dense(33,activation='sigmoid')(layer)
layer=Dense(22,activation='sigmoid')(layer)
layer=Dense(11,activation='sigmoid')(layer)
layer=Dense(7,activation='softmax')(layer)
model=Model(inputs=inp,outputs=layer)

model.compile('RMSprop','binary_crossentropy',metrics=['accuracy'])

history=model.fit(X_train,Y_train,epochs=50,steps_per_epoch=20,validation_data=(X_test,Y_test),validation_steps=1)
python machine-learning neural-network keras deep-learning
3个回答
0
投票

您的模型非常深,没有批量规范化或其他深度学习技术来处理深层网络。

从具有较少层的模型开始,以检查代码是否正常工作。然后你可以尝试更深入的模型。


0
投票

正如Daniel上面所说,使用常规DL技术(如批量标准化)是一个好习惯。这些将有助于您的数据集和培训。例如,上述批量标准化有助于使数据集更加“简单”,简单地说就是这样。

我在我写的初学者深度学习指南中写了关于这些不同的深度学习模型技术(批量规范,数据重组,退出等),你可以查看here

祝您好运,如果您有任何疑问,请告诉我!


0
投票

问题:您的网络问题是深度。主要问题可能是消失的梯度下降。 (https://en.wikipedia.org/wiki/Vanishing_gradient_problem

在选择深度模型之前要记住的事情。 1.为什么不是传统的机器学习模型? 2.您是否有足够的数据来训练深层模型?如果没有,你可以转学习吗? 3.是否有任何模型训练过类似的任务?

当我开始学习深度学习时,我曾经尝试过更多的隐藏层。但大多数模型并没有收敛。据我所知,最好的方法是实现众所周知的模型(vgg)并尝试使用超参数。 此外,Keras拥有许多预先训练过的模型,您可以对预先训练过的模型进行微调。

© www.soinside.com 2019 - 2024. All rights reserved.