# 【Python深度学习】Tensorflow对半环形数据分类、手写数字识别、猫狗识别实战（附源码）

## 一、半环形数据分类

Tensorflow是常见流行的深度学习平台，下面利用它来对半环形数据集进行分类

# encoding: utf-8
import numpy as np
from sklearn.datasets import make_moons
import tensorflow as tf
from sklearn.model_selection import train_test_split
from tensorflow.keras import layers, Sequential, optimizers, losses, metrics
from tensorflow.keras.layers import Dense
import matplotlib.pyplot as plt
# 产生一个半环形数据集
X, y = make_moons(200, noise=0.25, random_state=100)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=2)
print(X.shape, y.shape)
def make_plot(X, y, plot_name, XX=None, YY=None, preds=None):
plt.figure()
axes = plt.gca()
x_min = X[:, 0].min() - 1
x_max = X[:, 0].max() + 1
y_min = X[:, 1].min() - 1
y_max = X[:, 1].max() + 1
axes.set_xlim([x_min, x_max])
axes.set_ylim([y_min, y_max])
axes.set(xlabel="$x_l$", ylabel="$x_2$")
if XX is None and YY is None and preds is None:
yr = y.ravel()
for step in range(X[:, 0].size):
if yr[step] == 1:
plt.scatter(X[step, 0], X[step, 1], c='b', s=20,  edgecolors='none', marker='x')
else:
plt.scatter(X[step, 0], X[step, 1], c='r', s=30, edgecolors='none', marker='o')
plt.show()
else:
plt.contour(XX, YY, preds, cmap=plt.cm.spring, alpha=0.8)
plt.scatter(X[:, 0], X[:, 1], c=y, s=20, cmap=plt.cm.Greens, edgecolors='k')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.title(plot_name)
plt.show()
make_plot(X, y, None)
#创建容器
model = Sequential()
#创建第一层
for _ in range(3):
#创建最后一层，激活
model
y_min = X[:, 1].min() - 1
y_max = X[:, 1].max() + 1
XX, YY = np.meshgrid(np.arange(x_min, x_max, 0.01), np.arange(y_min, y_max, 0.01))
Z = model.predict_classes(np.c_[XX.ravel(), YY.ravel()])
preds = Z.reshape(XX.shape)
title = "分类结果"
make_plot(X_train, y_train, title, XX, YY, preds)

## 二、手写数字识别

import tensorflow as tf
#载入MNIST 数据集。
mnist = tf.keras.datasets.mnist
#拆分数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()
#将样本进行预处理，并从整数转换为浮点数
x_train, x_test = x_train / 255.0, x_test / 255.0
#使用tf.keras.Sequential将模型的各层堆叠，并设置参数
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
#设置模型的优化器和损失函数
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
#训练并验证模型
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test,  y_test, verbose=2)

## 三、猫狗识别

from tensorflow.keras.applications.resnet50 import ResNet50
from tensorflow.keras.preprocessing import image
from tensorflow.keras.applications.resnet50 import preprocess_input, decode_predictions
import numpy as np
from PIL import ImageFont, ImageDraw, Image
import cv2
img_path = 'dog.jpg'     #进行狗的判断
#img_path = 'cat.jpg'     #进行猫的判断
#img_path = 'deer.jpg'    #进行鹿的判断
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
weights_path = 'resnet50_weights_tf_dim_ordering_tf_kernels.h5'
def get_model():
model = ResNet50(weights=weights_path)
# 导入模型以及预训练权重
print(model.summary()) # 打印模型概况
return model
model = get_model()

|
21天前
|

|
2月前
|

57 1
|
10天前
|

14 2
|
19天前
|

8 0
|
21天前
|

|
23天前
|

7 1
|
23天前
|

PyBrain是Python的深度学习库，用于构建和训练模型。步骤包括安装库、导入模块、准备数据集、创建网络、训练、预测、评估和可视化。示例代码展示了如何使用PyBrain处理线性数据，包括数据预处理、构建2-3-1网络、BackpropTrainer训练、计算MSE误差和结果可视化。
12 0
|
24天前
|

15 0
|
1月前
|

【2月更文挑战第14天】【2月更文挑战第39篇】有什么资源或教程可以帮助我学习深度学习和Python中的深度学习框架？
17 2
|
1月前
|

python实现深度学习模型（如：卷积神经网络）。
【2月更文挑战第14天】【2月更文挑战第38篇】实现深度学习模型（如：卷积神经网络）。
21 1