【python】【深度学习】代码研究(持续更新ing)

目录

numpy

np.zeros()

np.ones()

np.prod()

pandas

Path

matplotlib

cv2

tensorflow

tensorflow.keras

import layers

import regularizers

import Model

import plot_model

import Adam

import ModelCheckpoint



numpy


Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库

【相关用法】

import numpy as np

# 创建一个一维数组
arr = np.array([1, 2, 3, 4, 5])

# 打印数组
print(arr)  # 输出:[1 2 3 4 5]

# 计算数组的平均值
mean = np.mean(arr)
print(mean)  # 输出:3.0

# 计算数组的最大值和最小值
max_value = np.amax(arr)
min_value = np.amin(arr)
print(max_value)  # 输出:5
print(min_value)  # 输出:1

np.zeros()

【相关用法】

np.zeros(5)

 运行结果:

array ( [ 0. , 0. , 0. , 0. , 0.] )

np.zeros((4,),dtype = int)

运行结果:

array ( [ 0 , 0 , 0 , 0 ] )

np.zeros((2,3))

运行结果: 
array (  [ [ 0. ,  0. ,  0.] ,
               [ 0. ,  0. ,  0.] ] ) 

np.ones()

np.ones(3)

  运行结果:

array ( [ 1. , 1. , 1. ] )

np.ones((3,),dtype = int)

 运行结果:

array ( [ 1 , 1 , 1 ] )

 np.ones((2, 3))

 运行结果: 
array (  [ [ 1. ,  1. ,  1. ] ,
               [ 1. ,  1. ,  1.] ] ) 

np.prod()

np.prod([2.,3.])

 运行结果: 6.0 ——计算所有元素的乘积

​np.prod([2.,3.][4.,5.])

  运行结果: 120.0 ——数组是二维的,计算所有元素的乘积

​np.prod([[2.,3.][4.,5.]],axis=1)

 运行结果:

array ( [ 6. , 20.  ] )——axis=1,水平方向乘积→

​np.prod([[2.,3.][4.,5.]],axis=0)

 运行结果:

array ( [ 8. , 15.  ] )——axis=1,竖直方向乘积


pandas


Pandas是python的一个数据分析包,提供了大量能使我们快速便捷地处理数据的函数和方法

import pandas as pd

 
# 创建Series
s = pd.Series([1, 3, 5, np.nan, 6, 8])
print(s)

# 创建DataFrame
df = pd.DataFrame(np.random.randn(6, 4), columns=list('ABCD'))
print(df)

3.读取和写入数据

 
# 读取csv文件
df = pd.read_csv('file.csv')

# 写入csv文件
df.to_csv('file.csv', index=False)

4.数据清洗和处理

 
# 删除缺失值
df.dropna()

# 填充缺失值
df.fillna(value=0)

# 替换值
df.replace(1, 'one')
5.数据分组和聚合

 
# 按列分组并计算平均值
df.groupby('column_name').mean()

# 按列分组并计算总和
df.groupby('column_name').sum()

# 按列分组并计算数量
df.groupby('column_name').count()

Path

from pathlib import Path

是Python中用于导入pathlib模块中的Path类的语句。

Path类提供了一种面向对象的方式来处理文件系统路径和相关操作。使用Path类,可以轻松地创建、访问、操作和删除文件和目录。

from pathlib import Path

# 创建一个新文件
file_path = Path("example.txt")
file_path.touch()

# 向文件中写入文本
with file_path.open(mode="w") as file:
    file.write("Hello, world!")

# 读取文件内容并打印
with file_path.open() as file:
    print(file.read())

matplotlib

是一个 Python 的绘图库,可以用来创建各种静态、动态、交互式的图表、图形和可视化界面。pyplot 是 matplotlib 的一个子模块,快速绘制各种类型的图表。

from matplotlib import pyplot as plt

【作用】是将 pyplot 子模块导入,并将其命名为 plt,这样在后续的代码中就可以使用 plt 来调用                  pyplot 中的函数

【例子】  plt.plot() 用于绘制折线图,

                plt.scatter() 用于绘制散点图等等。


cv2

是Python中用于图像处理和计算机视觉的开源库。

它提供了许多用于加载、处理和保存图像的函数和方法。

1. 导入cv2库:在Python中,我们可以使用import cv2语句将cv2库导入到我们的代码

2. 图像加载:cv2库提供了imread()函数,用于从文件中加载图像。例如,我们可以使用以下代码加载一张图像:

   img = cv2.imread('image.jpg')

3. 图像显示:cv2库提供了imshow()函数,用于在窗口中显示图像。例如,我们可以使用以下代码显示加载的图像:

   cv2.imshow('Image', img)

   cv2.waitKey(0)

   cv2.destroyAllWindows()

4. 图像保存:cv2库提供了imwrite()函数,用于将图像保存到文件中。例如,我们可以使用以下代码将图像保存为新的文件:

   cv2.imwrite('new_image.jpg', img)

5. 图像处理:cv2库提供了许多函数和方法用于对图像进行处理,如调整大小、裁剪、旋转、滤波等。例如,我们可以使用以下代码调整图像的大小:

   resized_img = cv2.resize(img, (width, height))

6. 视频处理:除了图像处理,cv2库还提供了函数和方法用于处理视频。例如,我们可以使用以下代码从摄像头捕获视频:

   cap = cv2.VideoCapture(0)

   while True:

       ret, frame = cap.read()

       cv2.imshow('Video', frame)

       if cv2.waitKey(1) == ord('q'):

           break

   cap.release()

   cv2.destroyAllWindows()

tensorflow

import tensorflow as tf

【简介】TensorFlow是一个开源的机器学习框架,它提供了丰富的工具和库,用于构建和训练各种机器学习模型。

【例子】

tf.keras模块来构建神经网络模型,

tf.data模块来处理和准备数据,

tf.train模块来定义训练过程

***************************************

tensorflow.keras

***************************************

import layers

from tensorflow.keras import layers

是一个Python模块,它提供了一组用于构建深度神经网络的层。这些层包括卷积层、池化层、全连接层、循环层等等。使用这些层可以方便地构建各种类型的神经网络,例如卷积神经网络、循环神经网络、自编码器等等。这个模块是TensorFlow的高级API之一,它使得构建和训练深度神经网络变得更加容易和高效。

【常用的层】

1. Conv2D:二维卷积层,用于处理图像数据。

2. MaxPooling2D:二维最大池化层,用于减小特征图的尺寸。

3. Dense:全连接层,用于将前一层的所有节点与当前层的所有节点相连。

4. LSTM:长短时记忆循环层,用于处理序列数据。

5. Dropout:随机失活层,用于防止过拟合。

【构建神经网络】

from tensorflow.keras import layers

model = keras.Sequential([
    layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.MaxPooling2D((2, 2)),
    layers.Conv2D(64, (3, 3), activation='relu'),
    layers.Flatten(),
    layers.Dense(64, activation='relu'),
    layers.Dense(10)
])

 这个模型包含三个卷积层和两个全连接层,用于对MNIST手写数字数据集进行分类。

***************************************

import regularizers

from tensorflow.keras import regularizers

regularizers是一个用于正则化神经网络模型的模块。正则化是一种防止过拟合的技术,它通过在模型的损失函数中添加额外的惩罚项来限制模型的复杂度。

该模块提供 正则化方法:包括L1正则化、L2正则化和弹性网络正则化等。

在使用这个模块时,可以通过在层的构造函数中指定相应的正则化器来对该层进行正则化。例如,可以使用L2正则化器来对一个全连接层进行正则化:

from tensorflow.keras.layers import Dense
from tensorflow.keras import regularizers

model.add(Dense(64,input_dim=64,activation='relu',
          kernel_regularizer=regularizers.l2(0.01)))

这里使用了L2正则化器,并将正则化系数设置为0.01。这意味着在计算该层的损失函数时,将会添加一个L2范数惩罚项,以限制该层权重的大小。

********************************

import Model

from tensorflow.keras.models import Model 

是用于构建 Keras 模型的类。它是一个高级模型类,可以让你定义更加复杂的模型,

例如多输入或多输出模型,共享层模型等。

与 Sequential 模型不同,Model 类需要明确指定输入和输出,并且需要定义每一层的输入和输出。通常情况下,Model 类被用于构建更加灵活和复杂的神经网络模型。

*********************************

import plot_model

from tensorflow.keras.utils import plot_model

是一个用于绘制 Keras 模型结构图的工具函数。

它可以将 Keras 模型绘制成一个图形化的结构图,方便我们更好地理解和调试模型。

【构建全连接神经网络模型并绘制】

from tensorflow.keras.models import Model
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.utils import plot_model

# 定义模型结构
inputs = Input(shape=(10,))
x = Dense(64, activation='relu')(inputs)
outputs = Dense(1, activation='sigmoid')(x)
model = Model(inputs=inputs, outputs=outputs)

# 绘制模型结构图
plot_model(model, to_file='model.png', show_shapes=True)

这段代码定义了一个简单的全连接神经网络模型,

并使用 `plot_model` 函数将其绘制成一个结构图,并保存为 `model.png` 文件。`show_shapes=True` 参数表示在图中显示每个层的输入输出形状

**************************

import Adam

from tensorflow.keras.optimizers import Adam 

是一个Python代码行,它导入了TensorFlow库中的Adam优化器。

Adam是一种常用的优化算法,用于调整神经网络模型的权重和偏置,以最小化训练数据上的损失函数。通过使用Adam优化器,可以更快地收敛到模型的最优解。

Adam优化器结合了Adagrad和RMSprop算法的优点,具有自适应学习率的特性。它根据每个参数的梯度和历史梯度平方的指数移动平均来更新参数。这种自适应学习率的方法可以在训练过程中自动调整学习率,从而提高模型的训练效果。

【Adam优化器使用】

from tensorflow.keras.optimizers import Adam

# 创建模型
model = ...

# 编译模型并指定优化器为Adam
model.compile(optimizer=Adam(learning_rate=0.001), loss='mse', metrics=['accuracy'])

# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32)

我们首先导入了Adam优化器,然后在模型的编译阶段将优化器设置为Adam,并指定了学习率为0.001。接下来,我们可以使用`model.fit()`方法来训练模型。

***********************************

import ModelCheckpoint

from tensorflow.keras.callbacks import ModelCheckpoint

【简介】是一个Keras回调函数,用于在训练期间保存模型的权重。它可以在每个epoch或在满足某些条件时保存模型的权重。这个回调函数可以帮助我们在训练过程中保存最好的模型,以便在训练结束后使用。  

【ModelCheckpoint参数】

- filepath:保存模型权重的路径。

- monitor:监测的指标,如val_loss或val_accuracy。

- save_best_only:是否只保存最好的模型。

- save_weights_only:是否只保存模型的权重而不是整个模型。

- mode:监测指标的模式,如min、max或auto。

- verbose:日志输出的详细程度。

【例子】

from tensorflow.keras.callbacks import ModelCheckpoint

checkpoint_path = "model_checkpoint.h5"
checkpoint = ModelCheckpoint(checkpoint_path, monitor='val_accuracy', verbose=1,             
                             save_best_only=True, mode='max')

model.fit(x_train, y_train, epochs=10, validation_data=(x_val, y_val), 
          callbacks=[checkpoint])

 这个例子中,我们定义了一个ModelCheckpoint回调函数,将监测验证集上的准确率,并且只保存最好的模型。在训练过程中,我们将这个回调函数传递给fit()方法的callbacks参数中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【为什么要学习这门课程】深度学习框架如TensorFlow和Pytorch掩盖了深度学习底层实现方法,那能否能用Python代码从零实现来学习深度学习原理呢?本课程就为大家提供了这个可能,有助于深刻理解深度学习原理。左手原理、右手代码,双管齐下!本课程详细讲解深度学习原理并进行Python代码实现深度学习网络。课程内容涵盖感知机、多层感知机、卷积神经网络、循环神经网络,并使用Python 3及Numpy、Matplotlib从零实现上述神经网络。本课程还讲述了神经网络的训练方法与实践技巧,且开展了代码实践演示。课程对于核心内容讲解深入细致,如基于计算图理解反向传播算法,并用数学公式推导反向传播算法;另外还讲述了卷积加速方法im2col。【课程收获】本课程力求使学员通过深度学习原理、算法公式及Python代码的对照学习,摆脱框架而掌握深度学习底层实现原理与方法。本课程将给学员分享深度学习Python实现代码。课程代码通过Jupyter Notebook演示,可在Windows、ubuntu等系统上运行,且不需GPU支持。【优惠说明】 课程正在优惠中!  备注:购课后可加入白勇老师课程学习交流QQ群:957519975【相关课程】学习本课程的前提是会使用Python语言以及Numpy和Matplotlib库。相关课程链接如下:《Python编程的术与道:Python语言入门》https://edu.csdn.net/course/detail/27845《玩转Numpy计算库》https://edu.csdn.net/lecturer/board/28656《玩转Matplotlib数据绘图库》https://edu.csdn.net/lecturer/board/28720【课程内容导图及特色】
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值