Итак, я сделал CNN, который классифицирует два типа птиц, и он работал нормально.После этого я попытался добавить еще один тип, но получил странные результаты.Я уже разместил это на бирже стека, но они сказали, что лучше спросить здесь, поэтому я предоставляю ссылку на этот пост.
https://ai.stackexchange.com/q/11444/23452
Вот код модели:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten, Conv2D, MaxPooling2D
from tensorflow.keras.callbacks import TensorBoard
import pickle
import time as time
gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction = 0.333)
sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))
pickle_in = open("C:/Users/Recep/Desktop/programlar/python/X.pickle","rb")
X = pickle.load(pickle_in)
pickle_in = open("C:/Users/Recep/Desktop/programlar/python/Y.pickle","rb")
Y = pickle.load(pickle_in)
X = X/255.0
node_size = 64
model_name = "agi_vs_golden-{}".format(time.time())
tensorboard = TensorBoard(log_dir='C:/Users/Recep/Desktop/programlar/python/logs/{}'.format(model_name))
file_writer = tf.summary.FileWriter('C:/Users/Recep/Desktop/programlar/python/logs/{}'.format(model_name, sess.graph))
model = Sequential()
model.add(Conv2D(node_size,(3,3),input_shape = X.shape[1:]))
#idk what that shape does except that and validation i have no problem
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Conv2D(node_size,(3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(node_size))
model.add(Activation("relu"))
model.add(Dense(1))
model.add(Activation("sigmoid"))
model.compile(loss="binary_crossentropy",optimizer="adam",metrics=["accuracy"])
model.fit(X,Y,batch_size=25,epochs=8,validation_split=0.1,callbacks=[tensorboard])
# idk what the validation is and how its used but dont think it caused the problem
model.save("agi_vs_gouldian.model")
Кстати, как я уже сказал в комментариях к моему оригинальному сообщению, я думаю, что, возможно, не хватает обучения сети, или у меня недостаточно данных.Поэтому я попытался увеличить количество эпох.Это вроде как проблема, но часть, которая меня интересует, это то, что случилось, когда у меня были более низкие эпохи?
Кто-нибудь может мне помочь?
Я даю приведенные ниже графики тензорных досок.
Кстати,мой массив данных rgb?
И как я могу избавиться от этого локального максимума% 70?
И поскольку я новичок в этом, я не знаю, что проверка действительно работает, но я видел, чтоГрафики валидации остаются теми же в первом обучении, с которым у меня были проблемы.
![validation graphs](https://i.stack.imgur.com/9tZ1u.png)