我想用Kfold检查我的模型的准确性。我希望在每次迭代之间重设模型权重,因此我不会继续根据先前的迭代权重进行计算。下面的代码够吗?还是该模型存在于keras后端的循环之外?
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import StratifiedKFold
from sklearn.utils import shuffle
import tensorflow as tf
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
sess = tf.InteractiveSession()
for train, test in kfold.split(X, Y):
model = Sequential()
model.add(Conv2D)
#Add more layers
model.compile()
model.fit()
#Calculate accuracy for each test element (pseudo code)
modelprediction=model.predict(testvalue1,2,3,4,5)
indexes = tf.argmax(modelprediction, axis=1)
print(totalAccuracy)
sess = tf.Interactive和Keras后端是否以某种方式节省了权重?我应该同时重置sess和keras吗?我该怎么办?
答案 0 :(得分:1)
由于在循环中使用model = Sequential()
(即定义模型) ,因此在每次迭代中,模型实际上都是“重置”(实际上是新定义的),因此您不必无需采取任何进一步的行动。