在我的训练中,损失和准确性保持不变

时间:2017-08-24 18:00:49

标签: tensorflow neural-network keras conv-neural-network

我正在尝试运行一个简单的前馈神经网络,我的训练和测试精度似乎在整个时代都是一样的。

from keras.models import Sequential
from keras.layers import Dense
from keras.utils import plot_model
from IPython import embed
from keras import optimizers
from keras import backend as K

import keras
import numpy as np
import glob


import pre_process_data as dataProc

def network():

    path = '/home/RD*'
    files = glob.glob(path)

    model = Sequential()
    model.add(Dense(2048, input_shape=(10030,),name="dense_one"))
    model.add(Dense(2048,activation='softmax',name = "dense_two"))
    model.add(Dense(4,activation='tanh',name = "dense_three"))
    #model.add(Dense(4,activation = 'relu',name = "dense_four"))

    for l in model.layers:
            print l.name, l.input_shape , "=======>", l.output_shape

    print model.summary()

    model.compile(loss = 'categorical_crossentropy',
                  optimizer = "adam",
                  metrics = ['accuracy'])   

    #Reads data from text files 
    pre_proc_data = dataProc.OnlyBestuData()

    data = pre_proc_data[:,0:-1]
    labels = pre_proc_data[:, -1] 
    labels = np.random.randint(0,4,32)   #Generate random lables

    one_hot_labels = keras.utils.to_categorical(labels, num_classes=4)
    model.fit(x = data,y = one_hot_labels ,epochs = 10, batch_size = 2, verbose = 2)

    #embed()


def main():
        with K.get_session():
                network()

   main()

我的输出粘贴在下面。我正在努力学习神经网络是如何工作的,因此我写了一个非常简单的前馈网络。我尝试将优化器从“adam”更改为“SGD”,学习率为0.01。然而,我的网络给了我不断的损失和准确性。由于这是一个小型网络,整个输入的尺寸为32x10030,其中每一行都是一组关节位置。

你能告诉我这里可能出现什么问题吗?

输出:

Epoch 1/10
5s - loss: 9.6919 - acc: 0.4375
Epoch 2/10
5s - loss: 9.5701 - acc: 0.4688
Epoch 3/10
5s - loss: 9.5701 - acc: 0.4688
Epoch 4/10
5s - loss: 9.5701 - acc: 0.4688
Epoch 5/10
5s - loss: 9.5701 - acc: 0.4688
Epoch 6/10
5s - loss: 9.5701 - acc: 0.4688
Epoch 7/10
5s - loss: 9.5701 - acc: 0.4688
Epoch 8/10
5s - loss: 9.5701 - acc: 0.4688
Epoch 9/10
5s - loss: 9.5701 - acc: 0.4688
Epoch 10/10
5s - loss: 9.5701 - acc: 0.4688

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的设置,您将拥有32个样本,每个样本具有10030个特征(也称为关节位置)。这是很多功能,而且样本太少。

尝试使用更多样本,同时减少您的功能,例如使用PCA。

为什么要为每一层使用不同且不寻常的激活?尝试将所有图层设置为ReLU(最后一层设置为softmax)并从那里开始。