Tensorflow in Practice 1.Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning
Tensorflow in Practice 是corusera.ai 上面的一门系列课程,该课程共有4门课:
- 1.Introduction to TensorFlow for Artificial Intelligence, Machine Learning, and Deep Learning
- 2.Convolutional Neural Networks in TensorFlow
- 3.Natural Language Processing in TensorFlow
- 4.Sequences, Time Series and Prediction
获取正版课程
小破站视频
将课程中的所有代码和练习,在这里整理一下。
- 1.1 建立神经网络的模型的过程
fashion_mnist 是tensorflow中的一个图片数据集,里面都是28x28x1的各种生活中常见的图片。下面建立一个全连接神经网络对其进行分类。
import tensorflow as tf
import keras
# 设置一个类,当准确度达到60%的时候就停止训练
# 回调类
class myCallback(keras.callbacks.Callback):
def on_epoch_end(self,epoch,logs={
}):
print("\nReached 60% accuracy so cancelling training!")
self.model.stop_training = True
callbacks = myCallback()
(xtrain,ytrain),(xtest,ytest) = keras.datasets.fashion_mnist.load_data()
print(xtrain.shape)
# 数据标准化
training_images=xtrain/255.0
test_images=xtest/255.0
# 建立模型结构
model = keras.Sequential()
model.add(keras.layers.Flatten(input_shape=(28,28))) # 平铺层:将28*28的数据转换为了一维的数据
model.add(keras.layers.Dense(512,activation=tf.nn.relu))
model.add(keras.layers.Dense(10,activation=tf.nn.softmax))
# 配置模型
model.compile("sgd",loss=keras.losses.sparse_categorical_crossentropy)
# 训练模型
model.fit(training_images,ytrain,epochs=5,callbacks=[callbacks])
- 1.2 卷积神经网络
import tensorflow as tf
from keras import Sequential
from keras.layers import Dense,Flatten,Conv2D,MaxPool2D
from keras.datasets import fashion_mnist
import keras
# load data and data preprocessing
mnist = fashion_mnist
(x_train,y_train),(x_test,y_test)=mnist.load_data()
trainimage = x_train.reshape(x_train.shape[0],x_train.shape[1],x_train.shape[2],1)
trainimage = trainimage/255.0
testimage = x_test.reshape(x_test.shape[0],x_test.shape[1],x_test.shape[2],1)
testimage = testimage/255.0
print(trainimage.shape)# 最后的1,表示图片的厚度也就是颜色灰度只有1阶
print(testimage.shape)
# create model
model = Sequential([
Conv2D(64,(3,3),activation='relu',input_shape=(28,28,1)), # 64个过滤器
MaxPool2D(2,2), # 第一2 为滤波器的大小,第二个2为滤波器运动的步数
Conv2D(64,(3,3),activation='relu'),
MaxPool2D(2,2),
Flatten(),
Dense(128,activation='relu'),
Dense(10,activation='softmax')
])
# set model
model.compile(optimizer='adam',loss=keras.losses.sparse_categorical_crossentropy)
model.summary()
# train model
model.fit(trainimage,y_train,epochs=5)
model.summary()解释:
第一层:输入数据维度为(28,28,1),滤波器个数64个,滤波器大小为(3,3),输出的大小为: [ n + 2 p − f s ] + 1 × [ n + 2 p − f s ] + 1 = 28 + 0 − 3 1 + 1 × 28 + 0 − 3 1 + 1 = 26 × 26 [\frac{n+2p-f}{s}]+1 \times [\frac{n+2p-f}{s}]+1=\frac{28+0-3}{1}+1 \times \frac{28+0-3}{1}+1=26 \times 26 [sn+2p−f]+1×[sn+2p−f]+1=128+0−3+1×128+0−