这两周学习了深度学习的基础知识,大概看了下BP,CNN,RNN的基本原理和概念,又用了几个小时时间(白天要上班只能晚上学习)简单看了下Keras文档,建立了一个非常简单的神经网络模型。
这个模型是简单的二分类模型(小白中的小白),当输入>25是输出1,否则输出0.
这里是需要导入的库:
from keras.models import Sequential
from keras.layers import Dense,Activation
from keras import regularizers
from keras.optimizers import SGD
from keras.models import load_model
import numpy as np
import pandas as pd
数据生成函数,生成样本和标签,数据量非常小:
def datagererate(x):
'''x,list;根据x产生x^2,x**2>25为1,<=25为0
返回sx,label,numpy格式'''
x_pow = list(map(lambda x:x**2,x))
data = pd.DataFrame(x_pow,columns=['value'])
data_select = data['value']>25
data['label'] = data_select.values
return data['value'].values,data['label'].values
模型训练和预测:
def train_and_Test(x_train,label,x_test):
'''
x_train为样本数据,label为样本标签,x_test为要预测的样本
'''
model = Sequential()
model.add(Dense(32,input_dim=1)) #建立输入层,一维数据
model.add(Activation('relu')) #激活函数采用ReLU
model.add(Dense(32,b_regularizer=l2(0.001))) #第二层32个单元,对系数b进行正则化
model.add(Dense(32))
model.add(Activation('relu'))
model.add(Dense(1)) #输出层
model.add(Activation('sigmoid'))
sgd = SGD(lr=0.01, decay=1e-5, momentum=0.9, nesterov=True) #采用随机梯度下降参数
model.compile(optimizer=sgd,
loss='binary_crossentropy',
metrics=['accuracy'])
model.fit(x_train,label,nb_epoch=30,batch_size=5) #编译
data_predict = model.predict_classes(x_test) #预测
(m,n) = data_predict.shape
data_out = pd.DataFrame(x_test,columns=['values'])
data_out['label'] = data_predict.reshape(n,m)[0]
return data_out #输出数据和标签
这个模型用于刚刚接触深度学习或者Keras的小白建立一个直观的感觉,深度学习的概念还是要好好看书学习。
版权声明:本文为pengkingli原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。