Моя модель даст 1 для каждого изображения, которое я пытаюсь классифицировать.Я использовал X.npy и Y.npy из репозитория kaggle для использования в качестве данных для обучения и тестирования - PullRequest
0 голосов
/ 27 февраля 2019

Моя модель даст 1 для каждого изображения, которое я пытаюсь классифицировать.Я использовал X.npy и Y.npy из репозитория kaggle для использования в качестве данных для обучения и тестирования.

Моя модель дает точность 76%.Если я кормлю свою модель другим изображением, связанным с раком молочной железы, либо IDC, либо не IDC, это даст мне 1, несмотря ни на что.

Изображение, которое я предсказываю, тоже из kaggle, но с другим набором данных.

Длина набора обучающих данных составляет 4437, а длина набора тестовых данных - 1110.

x_train = x_train.astype('float32')/255
x_test = x_test.astype('float32')/255
train_length=len(x_train)
test_length=len(x_test)

import keras
from keras.utils import np_utils

y_train=keras.utils.to_categorical(y_train,num_classes)
y_test=keras.utils.to_categorical(y_test,num_classes)

# import sequential model and all the required layers
from keras.models import Sequential
from keras.layers import Conv2D,MaxPooling2D,Dense,Flatten,Dropout
#make model
model=Sequential()
model.add(Conv2D(filters=16,kernel_size=2,padding="same",activation="relu",input_shape=(50,50,3)))
model.add(MaxPooling2D(pool_size=2))
model.add(Conv2D(filters=32,kernel_size=2,padding="same",activation="relu"))
model.add(MaxPooling2D(pool_size=2))
model.add(Conv2D(filters=64,kernel_size=2,padding="same",activation="relu"))
model.add(MaxPooling2D(pool_size=2))
model.add(Dropout(0.2))
model.add(Flatten())
model.add(Dense(500,activation="relu"))
model.add(Dropout(0.2))
model.add(Dense(2,activation="softmax"))
model.summary()

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

model.fit(x_train,y_train,batch_size=50
          ,epochs=500,verbose=1)
#

Здесь я пытаюсь передать изображение, чтобы сделать прогноз, если оно не IDC или IDC.

def convert_to_array(img):
    im = cv2.imread(img)
    img = Image.fromarray(im, 'RGB')
    image = img.resize((50, 50))
    return np.array(image)
def get_diagnosis(label):
    if label==0:
        return "non-IDC"
    if label==1:
        return "IDC"

def predict_diagnosis(file):
    ar=convert_to_array(file)
    ar=ar/255
    label=1
    a=[]
    a.append(ar)
    a=np.array(a)
    score=model.predict(a,verbose=1)
    print(score)
    label_index=np.argmax(score)
    print(label_index)
    acc=np.max(score)
    d=get_diagnosis(label_index)
    print(d)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...