Machine learning 模型训练后的Keras预测

Machine learning 模型训练后的Keras预测,machine-learning,keras,neural-network,conv-neural-network,prediction,Machine Learning,Keras,Neural Network,Conv Neural Network,Prediction,我训练了一个Keras模型,并将模型和权重保存到两个单独的文件中。我的培训数据和验证数据分为两类,如下所示: training\u数据/ 肯定的/ 消极的 验证数据/ 肯定的/ 否定的/ 两个培训数据目录各包含900k个样本,验证数据目录各包含20k个样本。所有样品均为43x43px 我的模型和学习过程定义如下: def get_模型(img_宽度、img_高度): 模型=顺序() 添加(Conv2D(32,(3,3),输入形状=(img\u宽度,img\u高度,3))) 添加(激活('rel

我训练了一个Keras模型,并将模型和权重保存到两个单独的文件中。我的培训数据和验证数据分为两类,如下所示:

training\u数据/
肯定的/
消极的
验证数据/
肯定的/
否定的/
两个培训数据目录各包含900k个样本,验证数据目录各包含20k个样本。所有样品均为43x43px

我的模型和学习过程定义如下:

def get_模型(img_宽度、img_高度):
模型=顺序()
添加(Conv2D(32,(3,3),输入形状=(img\u宽度,img\u高度,3)))
添加(激活('relu'))
add(MaxPooling2D(池大小=(2,2)))
model.add(Conv2D(32,(3,3)))
添加(激活('relu'))
add(MaxPooling2D(池大小=(2,2)))
model.add(Conv2D(64,(3,3)))
添加(激活('relu'))
add(MaxPooling2D(池大小=(2,2)))
model.add(展平())
模型.添加(密度(64))
添加(激活('relu'))
模型。添加(辍学率(0.5))
模型.添加(密度(1))
添加(激活('sigmoid'))
回归模型
模型=获取模型(43,43)
model.compile(loss='binary\u crossentropy',optimizer='rmsprop',
指标=[‘准确度’])
列车\数据发生器=图像数据发生器(
重新缩放=1./255,
剪切范围=0.2,
缩放范围=0.2,
旋转范围=20,
宽度\偏移\范围=0.2,
高度\移动\范围=0.2)
test_datagen=ImageDataGenerator(重缩放=1./255)
train_generator=来自目录的train_datagen.flow_(
列车数据目录,
目标尺寸=(图像宽度、图像高度),
批次大小=批次大小,
class_mode='binary')
验证\u生成器=来自\u目录的测试\u datagen.flow\u(
验证\u数据\u目录,
目标尺寸=(图像宽度、图像高度),
批次大小=批次大小,
class_mode='binary')
历史=model.fit\u生成器(
列车发电机,
每个历元的步数=nb\U序列样本//批量大小,
时代,
验证数据=验证生成器,
验证\u步骤=nb\u验证\u样本//批次大小)
model.save(os.path.join('model.h5'))
model.save_权重(os.path.join('weights.h5'))
保存模型信息(参数)
20个时代、1024个批次、1800.000个培训样本和40000个验证样本的培训过程耗时约5小时。
history
对象在这里,因为我还保存了准确性和学习图

现在,我正试图让这个模型预测在给定的测试样本中,哪一个经过训练的二类存在。因此,我创建模型,加载权重并尝试运行预测

model=get_model(43,43)
model.load\u权重(args.weights\u文件)
model.compile(loss='binary\u crossentropy',optimizer='rmsprop',
指标=[‘准确度’])
结果=[]
files=os.listdir(输入目录)
对于文件中的文件:
image=load\u img(文件)
image=np.asarray(图像)
图像=np。展开尺寸(图像,轴=0)
result.append(model.predict(图像))
打印(结果)
它正在工作,但不是我想要的方式。输出如下:

[array([[0]],dtype=float32),array([[0]],dtype=float32),array([[0]],dtype=float32),array([[0]],dtype=float32),array([[0]],dtype=float32),array([[0]],dtype=float32),array([[0]],dtype=float32),array([[0]],dtype=float32),array([[0]],dtype=float32),array([[0]],dtype=float32]),dtype=float32),array([[0]],数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32],dtype=float32),数组([[0.]([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32],数组([[0.]],dtype=float32]),dtype=float32),数组([[0.],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32]),dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32]),dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32]),dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32]),dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32]),dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float32),数组([[0.]],dtype=float
train_datagen = ImageDataGenerator(
    rescale=1. / 255,
    shear_range=0.2,
    zoom_range=0.2,
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2)
for file in files:
    image = load_img(file)
    image = np.asarray(image)
    image = np.expand_dims(image, axis=0)
    result.append(model.predict(image))
image = np.expand_dims(image, axis=0)
img = np.expand_dims(img / 255, axis=0)
model = get_model(43, 43)
model.load_weights(args.weights_file)
model.compile(loss='binary_crossentropy', optimizer='rmsprop',
          metrics=['accuracy'])
model = load_model(args.model_file)