我试图用喀拉拉邦制造一台机器,以对图像中的猫狗进行调和,该图像的开头是我自己选择的一小部分训练,然后是剩下的所有数据的测试数据。 在每次训练数据之后,机器将获得测试中的最佳数据并通过训练。避免使用已经训练好的数据。
我从具有25000张猫狗图像的数据集中读取图像进行分类,调整大小并将数据放置在机器上,但它获取了全部数据并放在“黑匣子”中。
import numpy as np
import matplotlib.pyplot as plt
import os
import cv2
from tqdm import tqdm
import pandas as pd
from keras.utils import np_utils
DATADIR = "/home/reinaldo/Documentos/PetImages/database"
CATEGORIES = ["Dog", "Cat"]
IMG_SIZE = 100
new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))
plt.imshow(new_array, cmap='gray')
plt.show()
training_data = []
def create_training_data():
for category in CATEGORIES: # do dogs and cats
path = os.path.join(DATADIR,category) # create path to dogs and cats'
``` class_num = CATEGORIES.index(category) # get the classification (0 or a 1). 0=dog 1=cat
```for tqdm(os.listdir(path))中的img:#遍历每只猫和狗的图像
```` try:
img_array = cv2.imread(os.path.join(path,img) ,cv2.IMREAD_GRAYSCALE) # convert to array`
new_array = cv2.resize(img_array,(IMG_SIZE,IMG_SIZE))#调整大小以规范化数据大小
````` training_data.append([new_array, class_num]) # add this to our training_data
````例外,例如e:#是为了保持输出整洁...
````` pass
create_training_data()
import random
random.shuffle(training_data)
for features,label in training_data:
X.append(features)
y.append(label)
print(X[0].reshape(-1, IMG_SIZE, IMG_SIZE, 1))
X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)
X = X/255.0
model = Sequential()
model.add(Conv2D(64, (3, 3), input_shape=X.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(64))
model.add(Dense(2))
model.add(Activation('softmax'))
keras.metrics.top_k_categorical_accuracy(y,y_pred, k=5)
model.compile(loss='categorical_crossentropy',
optimizer='adam',
metrics=['categorical_accuracy'])
model.fit(X, y, batch_size=32, epochs=10, validation_split=0.3)
我需要将训练数据和测试数据与文件夹分开,以便将训练后的数据和剩余数据保存在文件夹中。但是数据全部传递给了喀拉拉邦人。