тренировочный скриншот Я использую распределенную по времени модель, и моя точность остается неизменной на протяжении всего тренировочного процесса.Мои входные данные имеют формат (579,3368,368,1).579 в количестве образцов и 3 в последовательности изображений в каждом образце.Масштабирование всех изображений, прежде чем я добавлю их и разделю на тренировку и тестирование.
# loop through all the DICOM files
for filenameDCM in lstFilesDCM:
# read the file
res = img_resize(pydicom.read_file(filenameDCM).pixel_array,368)
# store the raw image data
test_array.append(preprocessing.scale(res))
test_finale = np.asarray(test_array).reshape(len(lstFilesDCM),368,368)
test_finale = test_finale.reshape(len(lstFilesDCM),368,368,1)
sequence_list = [[test_finale[i-2],test_finale[i-1],test_finale[i]] for i in range(2,test_finale.shape[0],3)]
sequence_list = np.asarray(sequence_list)
labels = np.zeros(579, dtype=int)
labels[:134] = 1
labels = to_categorical(labels, num_classes = 2)
X_train, X_test, y_train, y_test = train_test_split(sequence_list,labels, test_size=0.4, random_state=42)
#scaler = StandardScaler()
#X_train = scaler.fit_transform(X_train)
#X_test = scaler.fit(X_test)
#y_train = y
#y_test = y
model = Sequential()
model.add(TimeDistributed(Conv2D(64,(3,3),input_shape = (3,None,None,1), activation = 'relu',strides = 1, padding = 'same')))
model.add(TimeDistributed(Conv2D(64,(3,3), activation = 'relu',strides = 1, padding = 'same')))
model.add(TimeDistributed(MaxPool2D(pool_size = (2,2), strides = 2)))
#model.add(TimeDistributed(Dropout(0.1))
#model.add(TimeDistributed(Dropout(0.2))
model.add(TimeDistributed(Dense(128,activation ='sigmoid')))
#model.add(TimeDistributed(Dropout(0.2))
#model.add(TimeDistributed(Dense(128, activation = 'relu')))
model.add(TimeDistributed(GlobalAveragePooling2D()))
model.add(LSTM(32))
#model.add(Dense(256, activation = 'relu'))
model.add(Dense(2,activation='softmax'))
#opt = SGD(lr=0.001)
model.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['categorical_accuracy'] )
model.fit(X_train,y_train,validation_data=(X_test,y_test),epochs = 10, batch_size = 2)