import pickle
from sklearn.utils import shuffle
from sklearn.preprocessing import LabelBinarizer
from keras.models import Sequential
from keras.layers import Convolution2D, MaxPooling2D, Activation, Flatten, Dense
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:
test_data = pickle.load(f)
X_test = test_data['features']
y_test = test_data['labels']
X_test, y_test = shuffle(X_test, y_test)
# 标准化数据到0-1输出
def normalization(data):
return data/255 - 0.5
X_train = normalization(X_train)
X_test = normalization(X_test)
def one_hot(data):
label_binarizer = LabelBinarizer()
return label_binarizer.fit_transform(data)
y_train = one_hot(y_train)
y_test = one_hot(y_test)
model = Sequential()
model.add(Convolution2D(32, (3, 3), padding='valid', input_shape=(32, 32, 3)))
model.add(MaxPooling2D(2, 2))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(128))
model.add(Activation('relu'))
model.add(Dense(43))
model.add(Activation('softmax'))
model.compile('Adam', 'categorical_crossentropy', ['accuracy'])
history = model.fit(X_train, y_train, batch_size=64, 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))
3. 卷积神经网络使用keras进行交通信号识别
最新推荐文章于 2024-05-03 14:13:20 发布