分类 python 下的文章

选用的基础镜像
python:3.11
python:3.11-slim
python:3.11-alpine

alpine对PaddlePaddle不兼容

复制文件到 /app 文件夹下面

docker里面每一行命令都是基于前一个命令执行之后的容器文件新开一个容器

使用WORKDIR可以将后面的容器目录cd到该目录后面

opencv系统依赖

# 安装OpenCV依赖的系统库
RUN apt-get update && apt-get install -y \
    libgl1  \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libgomp1 \
    libjpeg-dev \
    libpng-dev \
    libtiff-dev \
    libwebp-dev \
    && rm -rf /var/lib/apt/lists/*

关键依赖解释:

  • libgl1 - OpenGL支持(GUI功能)
  • libglib2.0-0 - GLib库
  • libsm6, libxext6, libxrender-dev - X11图形库
  • libgomp1 - OpenMP并行计算
  • libgtk-3-dev - GTK库(GUI界面)
  • libavcodec-dev, libavformat-dev, libswscale-dev - 视频编解码库
  • libjpeg-dev, libpng-dev, libtiff-dev, libwebp-dev - 图像格式支持

最小化安装(如果不需要GUI功能):

RUN apt-get update && apt-get install -y \
    libgl1 \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libgomp1 \
    && rm -rf /var/lib/apt/lists/*

可以先创建虚拟环境,然后用
然后安装一下需要的包,最好使用

pip freeze > requirements.txt

保存下依赖

之后在dockerfile里面可以在copy完之后将依赖下载一下
最后可以使用CMD命令作为启动容器的默认命令,来起一个程序

使用

docker build -t name:tag .

来构建镜像
使用

docker images

来查看镜像
使用

docker run -d -p port:port --name name image:tag

来启动镜像

常用参数:

  • -d:后台运行
  • -p 8000:8000:端口映射(主机端口:容器端口)
  • --name my-container:给容器命名
  • -v /host/path:/container/path:挂载目录
  • -e ENV_VAR=value:设置环境变量

示例:

FROM python:3.11-slim

COPY . /app

WORKDIR /app

# 安装opencv依赖系统库
RUN apt-get update && apt-get install -y \
    libgl1 \
    libglib2.0-0 \
    libsm6 \
    libxext6 \
    libgomp1 \
    libjpeg-dev \
    libpng-dev \
    libtiff-dev \
    libwebp-dev \
    && rm -rf /var/lib/apt/lists/*

RUN pip install -r requirements.txt

EXPOSE 18689

CMD ["python", "ocr_service.py"]
FROM python:3.11-slim

COPY . /app

WORKDIR /app

RUN pip install -r requirements.txt

EXPOSE 7373

CMD ["python", "main.py"]

以微调 BERT 进行文本分类为例介绍Google Colab基本使用方式

微调模型的基本流程(以 Transformers 为例)

  1. 准备环境

    • 使用 GPU
    • 安装需要的库(如 transformersdatasetsaccelerate
  2. 加载预训练模型

    • bert-base-uncased, gpt2, llama, chatglm
  3. 准备数据集

    • 本地上传 / 从 Hugging Face 加载 / 自己合成
  4. 设置 Trainer / FineTuning 参数

    • 学习率、epoch、batch size 等
  5. 开始训练(Colab GPU 上)

    • 可以保存权重到 Google Drive
  6. 保存 / 推理 / 导出模型

0. 基本使用

打开colab

url: https://colab.research.google.com/

在导航栏点击file

image-20250701011002698

选择 New notebook in Drive ,后续会保存在你的google drive里

image-20250701012740138

或者在进入网页之后的弹窗里选择 + New notebook

image-20250701011050081

之后会自动创建一个 .ipynb 格式的文件

image-20250701011220403

之后可以在红色框住的地方输入python代码,然后点击左边的黑色开始按钮执行。

例如第一步想要安装一些微调模型必须的python库可以输入

!pip install transformers datasets accelerate

然后点击执行会有如下的反应:

image-20250701011323862

image-20250701011338649

在执行完成之后,原来的开始键旁边会有一个绿色的小勾,提示说运行完成,之后可以在下面查看运行的日志

image-20250701011531432

如果想要隐藏这个日志,可以点击开始键下面的按钮,然后选择第一个 Show/hide output

image-20250701011651038

之后就会将日志进行隐藏,如果想要查看日志,可以再次选择这个选项 Show hidden output

image-20250701011751607


之后想要运行新的python代码可以点击上方的 + Code

image-20250701011955907

点击之后在原来代码框的下方就会出现一个新的代码框

image-20250701012011915

也可以点击 + Text 然后添加一个文本框(markdown格式)作为注释或者对代码的说明

image-20250701012136463

编辑完文字之后点击别处就可以保存,如果想再次编辑只需要双击这个文本框即可

image-20250701012259024

除了在导航栏外,也可以直接将鼠标移动到代码块或者文本块下,会出现两个选项,选择想要的一项即可。

image-20250701012434625

主要代码:

1. 安装库

!pip install transformers>=4.3 datasets accelerate
!pip install --upgrade datasets fsspec

2. 加载预训练模型和 tokenizer

from transformers import AutoTokenizer, AutoModelForSequenceClassification

model_name = "bert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)

3. 加载数据集

from datasets import load_dataset

dataset = load_dataset("imdb")
tokenized = dataset.map(lambda x: tokenizer(x["text"], truncation=True, padding="max_length"), batched=True)
load_dataset("imdb") 中,"imdb" 是 Hugging Face Datasets 库 中的一个 内置数据集名称,表示 IMDB 电影评论数据集,是一个经典的二分类情感分析任务数据集。

4. 使用 Trainer 微调

from transformers import Trainer, TrainingArguments

args = TrainingArguments(
    output_dir="./results",
    per_device_train_batch_size=8,
    per_device_eval_batch_size=8,
    num_train_epochs=2,
    save_steps=500,
    logging_dir='./logs',
    report_to="none",
)

trainer = Trainer(
    model=model,
    args=args,
    train_dataset=tokenized["train"].shuffle().select(range(2000)),  # 小规模训练
    eval_dataset=tokenized["test"].shuffle().select(range(500)),
)

trainer.train()

使用 GPU(Colab 设置)

点击菜单栏「Runtime(运行时) → Change runtime type(更改运行时类型)」,选择 GPU 或 TPU」,训练速度可以大大提高。

数据 & 模型保存

你可以将训练过程中的模型、日志保存在 Google Drive 上:

from google.colab import drive
drive.mount('/content/drive')

# 保存模型
model.save_pretrained("/content/drive/MyDrive/bert_finetuned")
tokenizer.save_pretrained("/content/drive/MyDrive/bert_finetuned")

摸鱼-2022/12/20

早上一直在摸最后搞出来一个番茄钟

源代码:

import time
import tkinter as tk
import winsound
from tkinter import PhotoImage
#这是一个GUI界面
root = tk.Tk()
root.title("番茄钟-by heky")
root.wm_iconbitmap('heky.ico')
root.geometry("400x300") # 设置窗口大小
root.resizable(False, False) # 禁止自由伸缩窗口
img = PhotoImage(file='001.gif')
#lab = tk.Label(root, image = img)
#lab.configure(width=400, height=300)
#lab.place(x=0, y=0, relwidth=1, relheight=1)

#创建标签对象
Lable = tk.Label(root, text="输入时间然后点击开始时开始", background='#f9d367')
Lable.configure(width=400,height=4)
Lable.configure(font=('Arial', 16))
Lable.pack()

#创建文本框
entry = tk.Entry(root)
entry.pack(padx=100, pady=25)



root.configure(background='#f9d367')
#使用 StringVar 储存文本框的值
set_time = tk.StringVar()
entry['textvariable'] = set_time
a = 0

#主程序:
def write(*w):
    print(set_time.get())
    a = int(set_time.get())
    print(a)

def update_time():
    global Lable ,a,b

    # 更新剩余时间
    if b != 0:
        a -= 1
        timeset = "剩余时间:"+str(a)+"分钟"
        Lable.config(text=timeset)
        
    
    # 判断时间是否到达零
    if a > 0:
        # 如果时间未到达零,延迟1分后
        Lable.after(60000, update_time)
    elif a==0:
        Lable['text'] = "时间到了!"
        entry.delete(0, 'end')
        
        winsound.PlaySound("002.wav", winsound.SND_FILENAME) # 播放音乐提示
def restart():
    global b
    Lable['text'] = "输入时间然后点击开始时开始"
    b = 0
    entry.delete(0, 'end')
def main():
    global set_time, a, b
    b=1
    a = int(set_time.get())+1
    update_time()

#创建按钮
button = tk.Button(root, text="开始", command=main, bg="#87CEFA", fg="white",width=20,height=2)
button.pack()
#间隔
gap = tk.Label(root,background='#f9d367',height=1).pack()
button2 = tk.Button(root, text="复原", command=restart, bg="#87CEFA", fg="white",width=20,height=2)
button2.pack()

#运行主窗口
root.mainloop()

一下子一个上午就没了,因为没上课还被问话了,淦

效果图

有点小拉。。

python笔记1

Pyinstaller 库将 Python 程序打包成可执行文件。

安装:
pip install pyinstaller
打包成可执行文件:
pyinstaller -w -F your_python_file.py
其中,-w 参数表示去掉命令行窗口,-F 参数表示打包成单个可执行文件。

打包完成后,你可以在 dist 目录中找到可执行文件。

-w :去掉命令行窗口

-F :参数表示打包成单个可执行文件

--icon: 参数表示使用 icon.ico 文件作为软件图标。

--add-data:添加附带文件

添加一个名为“data.dat”的文件到你的程序中:

pyinstaller --add-data <存放data.dat的路径>/data.dat;. <python文件路径>

添加多个文件:

pyinstaller --add-data <存放file1.dat的路径>/file1.dat;. <存放file2.dat的路径>/file2.dat;. <python文件路径>

使用--add-data <文件夹路径>;. 命令将整个文件夹作为附加文件添加到Python程序中