import pickle
from sklearn.preprocessing import LabelBinarizer
from sklearn.utils import shuffle
from keras.models import Sequential
from keras.layers import Dense, Flatten, Activation
with open('train.p', 'rb') as f:
train_data = pickle.load(f)
X_train = train_data['features']
y_train = train_data['labels']
X_train, y_train = shuffle(X_train, y_train)
with open('test.p', 'rb') as f:
train_data = pickle.load(f)
X_test = train_data['features']
y_test = train_data['labels']
X_test, y_test = shuffle(X_test, y_test)
# 标准化数据(0-1)
def normalization(data):
return data/255 - 0.5
# (39209, 32, 32, 3)
X_train = normalization(X_train)
# (39209, 43)
X_test = normalization(X_test)
# 转化为one_hot
def one_hot(data):
label_binarizer = LabelBinarizer()
return label_binarizer.fit_transform(data)
# (12630, 32, 32, 3)
y_train = one_hot(y_train)
# (12630, 43)
y_test = one_hot(y_test)
model = Sequential()
model.add(Flatten(input_shape=(32, 32, 3)))
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dense(43))
model.add(Activation('softmax'))
model.compile(optimizer='Adam', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, y_train, batch_size=128, nb_epoch=30, validation_split=0.2)
metrics = model.evaluate(X_test, y_test)
for metric in range(len(model.metrics_names)):
metric_name = model.metrics_names[metric]
metric_value = metrics[metric]
print('{}:{}'.format(metric_name, metric_value))
2. 前馈神经网络使用keras进行交通标志识别
最新推荐文章于 2024-07-05 11:32:33 发布