3. 卷积神经网络使用keras进行交通信号识别

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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值