1.线性回归
import keras
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
x_data = np.random.rand(100)
noise = np.random.normal(0,0.01,x_data.shape)
y_data = x_data*0.1 + 0.2 + noise
plt.scatter(x_data,y_data)
plt.show()
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200512183916452.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQxNjg4NTU=,size_16,color_FFFFFF,t_70)
model = Sequential()
model.add(Dense(units=1,input_dim=1))
model.compile(optimizer='sgd',loss='mse')
for step in range(3001):
cost = model.train_on_batch(x_data,y_data)
if step % 500 == 0:
print('cost:',cost)
W,b = model.layers[0].get_weights()
print('W:',W,'b:',b)
y_pred = model.predict(x_data)
plt.scatter(x_data,y_data)
plt.plot(x_data,y_pred,'r-',lw=3)
plt.show()
2.非线性回归
import keras
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense,Activation
from keras.optimizers import SGD
x_data = np.linspace(-0.5,0.5,200)
noise = np.random.normal(0,0.02,x_data.shape)
y_data = np.square(x_data) + noise
plt.scatter(x_data,y_data)
plt.show()
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200512195352338.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQxNjg4NTU=,size_16,color_FFFFFF,t_70)
model = Sequential()
model.add(Dense(units=10,input_dim=1,activation='relu'))
model.add(Dense(units=1,activation='relu'))
sgd = SGD(lr=0.3)
model.compile(optimizer=sgd,loss='mse')
for step in range(5001):
cost = model.train_on_batch(x_data,y_data)
if step % 500 == 0:
print('cost:',cost)
y_pred = model.predict(x_data)
plt.scatter(x_data,y_data)
plt.plot(x_data,y_pred,'r-',lw=3)
plt.show()
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020051219550914.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQxNjg4NTU=,size_16,color_FFFFFF,t_70)
3.非线性回归
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
(x_train,y_train),(x_test,y_test) = mnist.load_data()
print('x_shape:',x_train.shape)
print('y_shape:',y_train.shape)
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
model = Sequential([
Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax')
])
sgd = SGD(lr=0.2)
model.compile(
optimizer = sgd,
loss = 'mse',
metrics=['accuracy'],
)
model.fit(x_train,y_train,batch_size=32,epochs=10)
loss,accuracy = model.evaluate(x_test,y_test)
print('\ntest loss',loss)
print('accuracy',accuracy)
4.交叉熵
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
(x_train,y_train),(x_test,y_test) = mnist.load_data()
print('x_shape:',x_train.shape)
print('y_shape:',y_train.shape)
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
model = Sequential([
Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax')
])
sgd = SGD(lr=0.2)
model.compile(
optimizer = sgd,
loss = 'categorical_crossentropy',
metrics=['accuracy'],
)
model.fit(x_train,y_train,batch_size=32,epochs=10)
loss,accuracy = model.evaluate(x_test,y_test)
print('\ntest loss',loss)
print('accuracy',accuracy)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020051312204987.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQxNjg4NTU=,size_16,color_FFFFFF,t_70)
5.Dropout应用
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense,Dropout
from keras.optimizers import SGD
(x_train,y_train),(x_test,y_test) = mnist.load_data()
print('x_shape:',x_train.shape)
print('y_shape:',y_train.shape)
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
model = Sequential([
Dense(units=200,input_dim=784,bias_initializer='one',activation='tanh'),
Dropout(0.4),
Dense(units=100,bias_initializer='one',activation='tanh'),
Dropout(0.4),
Dense(units=10,bias_initializer='one',activation='softmax')
])
sgd = SGD(lr=0.2)
model.compile(
optimizer = sgd,
loss = 'categorical_crossentropy',
metrics=['accuracy'],
)
model.fit(x_train,y_train,batch_size=32,epochs=10)
loss,accuracy = model.evaluate(x_test,y_test)
print('\ntest loss',loss)
print('test accuracy',accuracy)
loss,accuracy = model.evaluate(x_train,y_train)
print('train loss',loss)
print('train accuracy',accuracy)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513122343504.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQxNjg4NTU=,size_16,color_FFFFFF,t_70)
6.正则化应用
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
from keras.regularizers import l2
(x_train,y_train),(x_test,y_test) = mnist.load_data()
print('x_shape:',x_train.shape)
print('y_shape:',y_train.shape)
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
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))
])
sgd = SGD(lr=0.2)
model.compile(
optimizer = sgd,
loss = 'categorical_crossentropy',
metrics=['accuracy'],
)
model.fit(x_train,y_train,batch_size=32,epochs=10)
loss,accuracy = model.evaluate(x_test,y_test)
print('\ntest loss',loss)
print('test accuracy',accuracy)
loss,accuracy = model.evaluate(x_train,y_train)
print('train loss',loss)
print('train accuracy',accuracy)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513122720903.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQxNjg4NTU=,size_16,color_FFFFFF,t_70)
7.优化器
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD,Adam
(x_train,y_train),(x_test,y_test) = mnist.load_data()
print('x_shape:',x_train.shape)
print('y_shape:',y_train.shape)
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
model = Sequential([
Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax')
])
sgd = SGD(lr=0.2)
adam = Adam(lr=0.001)
model.compile(
optimizer = adam,
loss = 'categorical_crossentropy',
metrics=['accuracy'],
)
model.fit(x_train,y_train,batch_size=32,epochs=10)
loss,accuracy = model.evaluate(x_test,y_test)
print('\ntest loss',loss)
print('accuracy',accuracy)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513122955827.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQxNjg4NTU=,size_16,color_FFFFFF,t_70)
8.CNN应用于手写数字识别
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense,Dropout,Convolution2D,MaxPooling2D,Flatten
from keras.optimizers import Adam
(x_train,y_train),(x_test,y_test) = mnist.load_data()
x_train = x_train.reshape(-1,28,28,1)/255.0
x_test = x_test.reshape(-1,28,28,1)/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
model = Sequential()
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'))
model.add(Flatten())
model.add(Dense(1024,activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(10,activation='softmax'))
adam = Adam(lr=1e-4)
model.compile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(x_train,y_train,batch_size=64,epochs=10)
loss,accuracy = model.evaluate(x_test,y_test)
print('test loss',loss)
print('test accuracy',accuracy)
(x_train,y_train),(x_test,y_test) = mnist.load_data()
x_train = x_train.reshape(-1,28,28,1)/255.0
x_test = x_test.reshape(-1,28,28,1)/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
model = Sequential()
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'))
model.add(Flatten())
model.add(Dense(1024,activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(10,activation='softmax'))
adam = Adam(lr=1e-4)
model.compile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(x_train,y_train,batch_size=64,epochs=10)
loss,accuracy = model.evaluate(x_test,y_test)
print('test loss',loss)
print('test accuracy',accuracy)
9.RNN应用
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.layers.recurrent import SimpleRNN
from keras.optimizers import Adam
input_size = 28
time_steps = 28
cell_size = 50
(x_train,y_train),(x_test,y_test) = mnist.load_data()
x_train = x_train/255.0
x_test = x_test/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
model = Sequential()
model.add(SimpleRNN(
units = cell_size,
input_shape = (time_steps,input_size),
))
model.add(Dense(10,activation='softmax'))
adam = Adam(lr=1e-4)
model.compile(optimizer=adam,loss='categorical_crossentropy',metrics=['accuracy'])
model.fit(x_train,y_train,batch_size=64,epochs=10)
loss,accuracy = model.evaluate(x_test,y_test)
print('test loss',loss)
print('test accuracy',accuracy)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513123740676.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQxNjg4NTU=,size_16,color_FFFFFF,t_70)
10.模型保存
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
(x_train,y_train),(x_test,y_test) = mnist.load_data()
print('x_shape:',x_train.shape)
print('y_shape:',y_train.shape)
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
model = Sequential([
Dense(units=10,input_dim=784,bias_initializer='one',activation='softmax')
])
sgd = SGD(lr=0.2)
model.compile(
optimizer = sgd,
loss = 'mse',
metrics=['accuracy'],
)
model.fit(x_train,y_train,batch_size=64,epochs=5)
loss,accuracy = model.evaluate(x_test,y_test)
print('\ntest loss',loss)
print('accuracy',accuracy)
model.save('model.h5')
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513123928634.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQxNjg4NTU=,size_16,color_FFFFFF,t_70)
11.模型载入
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD
from keras.models import load_model
(x_train,y_train),(x_test,y_test) = mnist.load_data()
print('x_shape:',x_train.shape)
print('y_shape:',y_train.shape)
x_train = x_train.reshape(x_train.shape[0],-1)/255.0
x_test = x_test.reshape(x_test.shape[0],-1)/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
model = load_model('model.h5')
loss,accuracy = model.evaluate(x_test,y_test)
print('\ntest loss',loss)
print('accuracy',accuracy)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513124100781.png)
model.fit(x_train,y_train,batch_size=64,epochs=2)
loss,accuracy = model.evaluate(x_test,y_test)
print('\ntest loss',loss)
print('accuracy',accuracy)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513124133108.png)
model.save_weights('my_model_weights.h5')
model.load_weights('my_model_weights.h5')
from keras.models import model_from_json
json_string = model.to_json()
model = model_from_json(json_string)
print(json_string)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513124201915.png)
12.绘制网格结构
import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense,Dropout,Convolution2D,MaxPooling2D,Flatten
from keras.optimizers import Adam
from keras.utils.vis_utils import plot_model
import matplotlib.pyplot as plt
(x_train,y_train),(x_test,y_test) = mnist.load_data()
x_train = x_train.reshape(-1,28,28,1)/255.0
x_test = x_test.reshape(-1,28,28,1)/255.0
y_train = np_utils.to_categorical(y_train,num_classes=10)
y_test = np_utils.to_categorical(y_test,num_classes=10)
model = Sequential()
model.add(Convolution2D(
input_shape = (28,28,1),
filters = 32,
kernel_size = 5,
strides = 1,
padding = 'same',
activation = 'relu',
name = 'conv1'
))
model.add(MaxPooling2D(
pool_size = 2,
strides = 2,
padding = 'same',
name = 'pool1'
))
model.add(Convolution2D(64,5,strides=1,padding='same',activation = 'relu',name='conv2'))
model.add(MaxPooling2D(2,2,'same',name='pool2'))
model.add(Flatten())
model.add(Dense(1024,activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(10,activation='softmax'))
plot_model(model,to_file="model.png",show_shapes=True,show_layer_names=True,rankdir='TB')
plt.figure(figsize=(10,10))
img = plt.imread("model.png")
plt.imshow(img)
plt.axis('off')
plt.show()
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200513124339314.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTQxNjg4NTU=,size_16,color_FFFFFF,t_70)