构建网络基础
顺序模型用的多 # Sequential按顺序构成的模型 from keras.models import Sequential # 构建一个顺序模型 model = Sequential() #model中添加层 #方法一 # 构建一个顺序模型 model = Sequential() # 在模型中添加一个全连接层 # 1-10-1 model.add(Dense(units=10,input_dim=1,activation='relu')) # model.add(Activation('tanh')) model.add(Dense(units=1,activation='relu')) # model.add(Activation('tanh')) #方法二 # 创建模型 model = Sequential([ Dense(units=200,input_dim=784,bias_initializer='one',activation='tanh',kernel_regularizer=l2(0.0003)), Dense(units=100,bias_initializer='one',activation='tanh',kernel_regularizer=l2(0.0003)), Dense(units=10,bias_initializer='one',activation='softmax',kernel_regularizer=l2(0.0003)) ]) #全连接层 # Dense全连接层 from keras.layers import Dense # 构建一个顺序模型 model = Sequential() # 在模型中添加一个全连接层 # 1-10-1 model.add(Dense(units=10,input_dim=1,activation='relu')) # model.add(Activation('tanh')) model.add(Dense(units=1,activation='relu')) # model.add(Activation('tanh')) # 创建模型,输入784个神经元,输出10个神经元 model = Sequential([ Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax') ]) #卷积的层 from keras.layers import Dense,Dropout,Convolution2D,MaxPooling2D,Flatten # 第一个卷积层 # input_shape 输入平面 # filters 卷积核/滤波器个数 # kernel_size 卷积窗口大小 # strides 步长 # padding padding方式 same/valid # activation 激活函数 model.add(Convolution2D( input_shape = (28,28,1), filters = 32, kernel_size = 5, strides = 1, padding = 'same', activation = 'relu' )) # 第一个池化层 model.add(MaxPooling2D( pool_size = 2, strides = 2, padding = 'same', )) # 第二个卷积层 model.add(Convolution2D(64,5,strides=1,padding='same',activation = 'relu')) # 第二个池化层 model.add(MaxPooling2D(2,2,'same')) # 把第二个池化层的输出扁平化为1维 model.add(Flatten()) # 第一个全连接层 model.add(Dense(1024,activation = 'relu')) # Dropout model.add(Dropout(0.5)) # 第二个全连接层 model.add(Dense(10,activation='softmax'))
#指定优化器 #定义优化器,loss function,训练过程中计算准确率 model.compile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy']) #optimizer:这个可以使用keras准备好的优化器,'adam',sgd但是这些优化算法参数固定。可以自己定义 #loss:损失函数,交叉熵:'categorical_crossentropy'。均方误差:'mse'