Keras库自用学习笔记

Keras库

1-Keras

Keras是强大、易用的深度学习库,基于Theano和TensorFlow提供了高阶神经网络API,用于开发和评估深度学习模型。
示例

import numpy as np
from keras.models import Sequential
from keras.layers import Dense
data = np.random.random((1000,100))
labels = np.random.randint(2,size=(1000,1))
model = Sequential()
model.add(Dense(32,
                activation='relu',
                input_dim=100))
model.add(Dense(1,activation='sigmoid'))
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])
model.fit(data,labels,epochs=10,batch_size=32)
predictions = model.predict(data)

2-导入数据

数据要存为NumPy数组或数组列表,使用sklearn.cross_validation的train_test_split模块进行分割将数据分割为训练集和测试集。

使用Keras数据集

from keras.datasets import boston_housing,mnist,cifar10,imdb
(x_train,y_train),(x_test,y_test) = mnist.load_data()
(x_train2,y_train2),(x_test2,y_test2) = boston_housing.load_data()
(x_train3,y_train3),(x_test3,y_test3) = cifar10.load_data()
(x_train4,y_train4),(x_test4,y_test4) = imdb.load_data(num_word=20000)
num_classes = 10

其他导数数据方法

import numpy as np
from urllib.request import urlopen
data = np.loadtxt(urlopen(\
    "https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data")\
    ,delimiter=",")
X = data[:,0:8]
y = data [:,8]

3-数据预处理

序列填充

from keras.preprocessing import sequence
x_train4 = sequence.pad_sequences(x_train4,maxlen=80)
x_test4 = sequence.pad_sequences(x_test4,maxlen=80)

独热编码

from keras.utils import to_categorical
Y_train = to_categorical(y_train, num_classes)
Y_test = to_categorical(y_test, num_classes)
Y_train3 = to_categorical(y_train3, num_classes)
Y_test3 = to_categorical(y_test3, num_classes)

训练与测试

from sklearn.model_selection import train_test_split
X_train5,X_test5,y_train5,y_test5 = train_test_split(X,
                                                     y,
                                                     test_size=0.33,
                                                     random_state=42)

标准化/归一化

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().fit(x_train2)
standardized_X = scaler.transform(x_train2)
standardized_X_test = scaler.transform(x_test2)

4-模型架构

序贯模型

from keras.models import Sequential
model = Sequential()
model2 = Sequential()
model3 = Sequential()

多层感知器

二进制分类

from keras.layers import Dense
model.add(Dense(12,
                input_dim=8,
                kernel_initializer='uniform',
                activation='relu'))
model.add(Dense(8,kernel_initializer='uniform',activation='relu'))
model.add(Dense(1,kernel_initializer='uniform',activation='sigmoid'))

多级分类

from keras.layers import Dropout
model.add(Dense(512,activation='relu',input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(512,activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(10,activation='softmax'))

回归

model.add(Dense(64,activation='relu',input_dim=train_data.shape[1]))
model.add(Dense(1))

卷积神经网络(CNN)

from keras.layers import Activation,Conv2D,MaxPooling2D,Flatten
model2.add(Conv2D(32,(3,3),padding='same',input_shape=x_train.shape[1:]))
model2.add(Activation('relu'))
model2.add(Conv2D(32,(3,3)))
model2.add(Activation('relu'))
model2.add(MaxPooling2D(pool_size=(2,2)))
model2.add(Dropout(0.25))
model2.add(Conv2D(64,(3,3), padding='same'))
model2.add(Activation('relu'))
model2.add(Conv2D(64,(3, 3)))
model2.add(Activation('relu'))
model2.add(MaxPooling2D(pool_size=(2,2)))
model2.add(Dropout(0.25))
model2.add(Flatten())
model2.add(Dense(512))
model2.add(Activation('relu'))
model2.add(Dropout(0.5))
model2.add(Dense(num_classes))
model2.add(Activation('softmax'))

递归神经网络(RNN)

from keras.layers import Embedding,LSTM
model3.add(Embedding(20000,128))
model3.add(LSTM(128,dropout=0.2,recurrent_dropout=0.2))
model3.add(keras.layers.Dense(1,activation='sigmoid'))

5-审视模型

model.output_shape  #模型输出形状
model.summary()     #模型摘要展示
model.get_config()  #模型配置
model.get_weights() #列出模型的所有权重张量

6-编译模型

多层感知器:二进制分类

model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

多层感知器:多级分类

model.compile(optimizer='rmsprop',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

递归神经网络

model3.compile(loss='binary_crossentropy',
               optimizer='adam',
               metrics=['accuracy'])

7-模型训练

model3.fit(x_train4,
           y_train4,
           batch_size=32,
           epochs=15,
           verbose=1,
           validation_data=(x_test4,y_test4))

8-评估模型性能

score = model3.evaluate(x_test,
                        y_test,
                        batch_size=32)

9-预测

 model3.predict(x_test4, batch_size=32)
 model3.predict_classes(x_test4,batch_size=32)

10-保存/加载模型

from keras.models import load_model
model3.save('model_file.h5')
my_model = load_model('my_model.h5')

11-模型微调

参数优化

from keras.optimizers import RMSprop
opt = RMSprop(lr=0.0001, decay=1e-6)
model2.compile(loss='categorical_crossentropy',
               optimizer=opt,
               metrics=['accuracy'])

早停法

from keras.callbacks import EarlyStopping
early_stopping_monitor = EarlyStopping(patience=2)
model3.fit(x_train4,
           y_train4,
           batch_size=32,
           epochs=15,
           validation_data=(x_test4,y_test4),
           callbacks=[early_stopping_monitor])
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值