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
================================时代代码============== ==
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 的数据要加载。