【问题标题】:How can I avoid obtaining loss: nan - acc: 0.0000e+00 for CNN-LSTM?如何避免获得 loss: nan - acc: 0.0000e+00 for CNN-LSTM?
【发布时间】:2021-01-04 11:36:07
【问题描述】:

我正在尝试使用 CNN-LSTM 进行 3 类分类,我已经在 MATLAB 上准备了我的数据,并使用以下代码进行了训练。它适用于二进制分类,我使用二进制交叉熵,但不适用于我使用 sparse_categorical_crossentropy 的多类情况。我有 nan 的损失和 0.0000e+00 的准确性。这里有什么问题?

import os

os.environ["CUDA_DEVİCE_ORDER"] = "PCI_BUS_ID"

os.environ["CUDA_VISIBLE_DEVICES"] = "1"



import scipy.io

import numpy as np

mat = scipy.io.loadmat('frames3class_train80_test20.mat')

XTrain = mat['tensortrain']

y = mat['YTrain']


##
trainlength=2400

X = np.zeros(shape=(trainlength,8,18,400,1))

X[:,:,:,:,0]=XTrain



import keras
 from keras.layers import Dense, LSTM, Flatten, TimeDistributed, Conv2D, Dropout,MaxPooling2D

from keras.models import Sequential

width = 18

height = 400

kernelsize =2 
numberOfHiddenUnits =8 
model = Sequential()

model.add(TimeDistributed(Conv2D(2, (kernelsize, kernelsize), activation='relu'),
                          input_shape=(None, width, height, 1)))

model.add(TimeDistributed(MaxPooling2D(pool_size=(2, 2))))

model.add(TimeDistributed(Flatten()))

model.add(LSTM(numberOfHiddenUnits))

model.add(Dense(1, activation='sigmoid'))

opt=keras.optimizers.Adam(learning_rate=0.000001)
model.compile(loss=keras.losses.sparse_categorical_crossentropy, optimizer=opt, metrics=['acc'])
print(model.summary())



model.fit(X, y,batch_size=16,epochs=30)


Python 控制台上的结果为

  16/2400 [..............................] - ETA: 2s - loss: nan - acc: 0.0000e+00
  80/2400 [>.............................] - ETA: 2s - loss: nan - acc: 0.0000e+00
 144/2400 [>.............................] - ETA: 2s - loss: nan - acc: 0.0000e+00
 208/2400 [=>............................] - ETA: 2s - loss: nan - acc: 0.0000e+00
 272/2400 [==>...........................] - ETA: 2s - loss: nan - acc: 0.0000e+00
 336/2400 [===>..........................] - ETA: 2s - loss: nan - acc: 0.0000e+00
 384/2400 [===>..........................] - ETA: 2s - loss: nan - acc: 0.0000e+00

感谢您的帮助,

【问题讨论】:

  • 3 类分类,1 个输出神经元和 sigmoid 激活

标签: keras nan loss


【解决方案1】:

好的,我用一种热编码更改了标签,并且相应地解决了损失函数。

【讨论】:

    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多