【发布时间】:2019-03-25 17:56:18
【问题描述】:
所以我制作了一个分类两种鸟类的 CNN,它运行良好。之后,我尝试再添加一种类型,但结果很奇怪。我已经在 ai stack exchange 上发布了这个,但他们说最好在这里问,所以我提供了那个帖子的链接。
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")
顺便说一句,正如我在原始帖子的 cmets 中所说,我认为可能是网络训练不足,或者我没有足够的数据。所以我尝试增加时代的数量。它有点问题,但我很好奇的是当我有较低的时代时发生了什么?
谁能帮帮我?
我在下面给出张量板图。
顺便说一句,我的数据数组是 rgb 吗?
我怎样才能摆脱这个 %70 的本地最大值?
由于我是这方面的初学者,我不知道什么验证真正有效,但我看到验证图在我遇到问题的第一次训练中保持不变。
【问题讨论】:
-
即使很难,它的准确度也最高可以达到 %75,它无法正确预测我展示的图片。获得最大 %30 - %40 的准确度
-
如果我使用较低的 epoch,比如最多 10 个,它会随着时间的推移变得更糟,但不会提高准确性。但是,如果我给它大约 10 它会变得更好而不会变得更糟。我没明白为什么?以及为什么它有 %70 的准确率时仍然很糟糕
标签: machine-learning keras neural-network conv-neural-network