Моя модель даст 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)