我的损失是 nan,准确度是 0.0000e -val_loss nan -val 准确度 0.000e

时间:2021-02-05 18:06:48

标签: python jupyter-notebook jupyter

import os
import joblib
import tensorflow as tf
from tensorflow import keras
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
import random
from keras.models import Sequential
from keras.callbacks import EarlyStopping
from keras.layers import Conv2D,Flatten,Dense,MaxPooling2D,Dropout
import cv2
import tqdm


datasets = joblib.load('data_label_train_test_valid_grayscale_haar.txt')

X = datasets['train_data']
Y = datasets['train_label']
c = list(zip(X,Y))
random.shuffle(c)
X_train, y_train = zip(*c)

X = datasets['test_data']
Y = datasets['test_label']
c = list(zip(X,Y))
random.shuffle(c)
X_test, y_test = zip(*c)

X = datasets['valid_data']
Y = datasets['valid_label']
c = list(zip(X,Y))
random.shuffle(c)
X_valid, y_valid = zip(*c)

X_train = np.asarray(X_train)
y_train = np.asarray(y_train)
X_test = np.asarray(X_test)
y_test = np.asarray(y_test)
X_val = np.asarray(X_valid)
y_val = np.asarray(y_valid)

print("X_train shape:"+str(X_train.shape))
print("X_test shape:"+str(X_test.shape))
print("X_valid shape:"+str(X_val.shape))

Output : /* X_train shape:(48300, 256, 192)
X_test shape:(16100, 256, 192)
X_valid shape:(16100, 256, 192)*/

  import cv2
    
    X_train_full = []
    X_test_full = []
    X_valid_full = []
    for i in X_train:
        res = cv2.resize(i, dsize=(28, 28), interpolation=cv2.INTER_CUBIC)
        X_train_full.append(res)
        
    for i in X_test:
        res = cv2.resize(i, dsize=(28, 28), interpolation=cv2.INTER_CUBIC)
        X_test_full.append(res)
        
    for i in X_val:
        res = cv2.resize(i, dsize=(28, 28), interpolation=cv2.INTER_CUBIC)
        X_valid_full.append(res)
    
    
    X_train_full = np.asarray(X_train_full)
    X_test_full = np.asarray(X_test_full)
    X_valid_full = np.asarray(X_valid_full)
    
    X_train_full[0].shape
    
    
    X_mean = X_train_full.mean(axis=0, keepdims=True)
    X_std = X_train_full.std(axis=0, keepdims=True) + 1e-7
    X_train_full = (X_train_full - X_mean) / X_std
    X_valid_full = (X_valid_full - X_mean) / X_std
    X_test_full = (X_test_full - X_mean) / X_std

我在训练/有效/测试中将数据分成 60/20/20,然后随机化,然后使用随机库,但是 smh 它不能很好地运行 epochs enter image description here ================================时代代码============== ==

model = tf.keras.Sequential()
    model.add(keras.layers.LSTM(128,input_shape=(28,28), activation='relu', return_sequences=True))
    model.add(keras.layers.LSTM(128, activation='relu'))
    model.add(keras.layers.Dense(128, activation='relu'))
    model.add(keras.layers.Dropout(0.2))
    model.add(keras.layers.Dense(64, activation='relu'))
    model.add(keras.layers.Dropout(0.2))
    model.add(keras.layers.Dense(32, activation='relu'))
    model.add(keras.layers.Dropout(0.2))
    model.add(keras.layers.Dense(161, activation='softmax'))
    
    model.compile(optimizer='adam',loss='sparse_categorical_crossentropy', metrics=['accuracy'])
    
    model.summary()
    
    history=model.fit(X_train_full,y_train,epochs=10,validation_data=(X_valid_full, y_val))

有什么解决办法吗?为什么我每次都得到相同的输出,即 NaN。目前在我的数据集中,我有 80k 的数据要加载。

但是当我运行 epochs 时它不起作用 enter image description here

0 个答案:

没有答案