分批读取训练数据进行训练
程序员文章站
2022-05-30 22:41:24
训练集数据量过大受设备内存影响不能将全部数据直接放到网络中进行训练,需要分批读取训练数据。train_x为训练集地址,train_y为训练集标签,val_X为验证集数据,val_y为验证集标签。分批读取函数如下:def dataset_split(images, labels, batch_size): while 1: i = 0 n = math.ceil(len(images)/batch_size) print(n)...
训练集数据量过大受设备内存影响不能将全部数据直接放到网络中进行训练,需要分批读取训练数据。
train_x为训练集地址,train_y为训练集标签,val_X为验证集数据,val_y为验证集标签。
分批读取函数如下:
def dataset_split(images, labels, batch_size):
while 1:
i = 0
n = math.ceil(len(images)/batch_size)
print(n)
for j in range(n):
if j != n-1:
x = images[i : i + batch_size]
y = labels[i : i + batch_size]
i = i + batch_size
X = []
for m in range(len(x)):
a = cv2.imread(x[m])
#print(type(a))
a = a.tolist()
#print(type(a))
X.append(a)
X = np.array(X)
yield X, y
if j == n-1:
x = images[len(images)-batch_size: ]
y = labels[len(labels)-batch_size: ]
X = []
for m in range(len(x)):
a = cv2.imread(x[m])
a = a.tolist()
X.append(a)
X = np.array(X)
yield X, y
model.fit_generator(dataset_split(train_x, train_y, batch_size),
validation_data=(val_X, val_y), steps_per_epoch=
(len(train_x) // batch_size), epochs=EPOCHS,
verbose=2, callbacks=[csv_logger, checkpointer])
本文地址:https://blog.csdn.net/qq_21466543/article/details/107150645
推荐阅读
-
在C#下使用TensorFlow.NET训练自己的数据集
-
C#使用TensorFlow.NET训练自己的数据集的方法
-
python训练数据时打乱训练数据与标签的两种方法小结
-
对sklearn的使用之数据集的拆分与训练详解(python3.6)
-
基于jupyter notebook的python编程(Win10通过OpenCv-3.4.1进行人脸口罩数据集的模型训练并进行戴口罩识别检测)
-
Tensorflow实现在训练好的模型上进行测试
-
使用Tensorflow将自己的数据分割成batch训练实例
-
详解tensorflow训练自己的数据集实现CNN图像分类
-
Mobilenetv3-ssd训练VOC格式数据集loss出现nan:数据本身出现问题
-
python 用opencv调用训练好的模型进行识别的方法