2. 前馈神经网络使用keras进行交通标志识别

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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值