torch 快速入门

Quickstart

This section runs through the API for common tasks in machine learning. Refer to the links in each section to dive deeper.

Working with data

PyTorch has two primitives to work with datatorch.utils.data.DataLoaderand torch.utils.data.DatasetDataset stores the samples and their corresponding labels, and DataLoader wraps an iterable around the Dataset.

import torch
from torch import nn
from torch.utils.data import DataLoader
from torchvision import datasets
from torchvision.transforms import ToTensor

PyTorch offers domain-specific libraries such as TorchTextTorchVision, andTorchAudio, all of which include datasets. For this tutorial, we will be using a TorchVision dataset.

The torchvision.datasets module contains Dataset objects for many real-world vision data like CIFAR, COCO (full list here). In this tutorial, we use the FashionMNIST dataset. Every TorchVision Dataset includes two arguments:transform and target_transform to modify the samples and labels respectively.

# Download training data from open datasets.
training_data = datasets.FashionMNIST(
    root="data",
    train=True,
    download=True,
    transform=ToTensor(),
)

# Download test data from open datasets.
test_data = datasets.FashionMNIST(
    root="data",
    train=False,
    download=True,
    transform=ToTensor(),
)
print(len(training_data))
60000
继续阅读“torch 快速入门”

Python中r’ ‘, b’ ‘, u’ ‘, f’ ‘的含义及用法详解

在Python中,字符串是一种常见的数据类型,用于表示文本信息。除了普通的字符串,Python还提供了一些特殊的字符串前缀和格式化字符串,包括r’ ‘,b’ ‘,u’ ‘,f’ ‘。本文将详细解释这些前缀的含义以及它们的用法,以帮助大家更好地理解和应用它们。

更多Python学习内容:http://ipengtao.com

r’ ‘: 原始字符串

r前缀表示原始字符串(raw string),它会取消字符串中的转义字符(如\n、\t)的特殊含义。原始字符串适用于需要保留转义字符原始形式的情况,如正则表达式、文件路径等。

1 基本用法

# 使用r前缀创建原始字符串
path = r’C:\Users\Username\Documents’
print(path)

在上述示例中,r前缀将字符串中的反斜杠\视为普通字符,而不是转义字符。

2 与转义字符的比较

# 普通字符串与原始字符串的比较
normal_str = ‘C:\\Users\\Username\\Documents’
raw_str = r’C:\Users\Username\Documents’

print(normal_str == raw_str)  # 输出 True

原始字符串与普通字符串在表示相同的文本时是相等的,但原始字符串更容易阅读和维护。

b’ ‘: 字节字符串

b前缀表示字节字符串(bytes string),它用于处理二进制数据,而不是文本数据。字节字符串是不可变的,通常用于处理图像、音频、网络协议等二进制数据。

1 基本用法

# 使用b前缀创建字节字符串
binary_data = b’\x48\x65\x6c\x6c\x6f’  # 字母 ‘Hello’ 的字节表示
print(binary_data)

在上述示例中,b前缀表示字节字符串,每个\x后面跟着两个十六进制数字,表示一个字节。

2 字符串与字节字符串的区别

# 字符串与字节字符串的区别
text = ‘Hello’
binary_data = b’Hello’

print(type(text))  # 输出 <class ‘str’>
print(type(binary_data))  # 输出 <class ‘bytes’>

字符串和字节字符串是不同的数据类型,字符串用于文本,字节字符串用于二进制数据。

u’ ‘: Unicode字符串

u前缀表示Unicode字符串,它用于处理Unicode编码的文本数据。在Python 3中,所有的字符串都是Unicode字符串,因此很少需要使用u前缀。在Python 2中,u前缀用于表示Unicode字符串。

1 基本用法

# 使用u前缀创建Unicode字符串(Python 2示例)
unicode_text = u’你好,世界!’
print(unicode_text)

在Python 3中,无需使用u前缀,普通字符串即为Unicode字符串。

2 Unicode字符串与普通字符串的区别

# Unicode字符串与普通字符串的区别(Python 2示例)
text = ‘Hello’
unicode_text = u’Hello’

print(type(text))  # 输出 <type ‘str’>
print(type(unicode_text))  # 输出 <type ‘unicode’>

在Python 2中,Unicode字符串与普通字符串是不同的数据类型,用于区分文本编码。

f’ ‘: 格式化字符串

f前缀表示格式化字符串(formatted string),它用于在字符串中嵌入表达式的值。在格式化字符串中,可以使用大括号{}来引用变量或表达式,并将其值插入字符串中。

1 基本用法

# 使用f前缀创建格式化字符串
name = ‘Alice’
age = 30
greeting = f’Hello, my name is {name} and I am {age} years old.’
print(greeting)

在上述示例中,f前缀表示格式化字符串,大括号{}内的表达式会被计算并插入到字符串中。

2 表达式和变量

# 在格式化字符串中使用表达式和变量
x = 10
y = 20
result = f’The sum of {x} and {y} is {x + y}’
print(result)

格式化字符串允许嵌入表达式和变量,并将它们的值动态插入到字符串中。

总结

在Python中,r’ ‘,b’ ‘,u’ ‘,f’ ‘等前缀和格式化字符串是用于处理不同类型文本和数据的工具。r前缀表示原始字符串,b前缀表示字节字符串,u前缀表示Unicode字符串,f前缀表示格式化字符串。了解这些前缀的含义和用法有助于更好地处理不同类型的字符串和数据。

梯度、散度、旋度

0、哈密顿算子

1、梯度(Gradient)是矢量,也是法向量

2、散度(Divergence)是标量

3、旋度(Curl)是向量

  • 标量的梯度为矢量,因此对该矢量可以继续求散度,从而引入拉普拉斯算子∇2 :
  • 矢量的散度为标量,因此对该标量可以继续求梯度:

拉普拉斯算子对标量的运算结果为标量、对矢量的运算结果为矢量。

举例:

电势场的梯度是电场强度,电场强度的的散度等于q/ε,高斯定理

python from .xxx import yyy 与 from xxx import yyy区别

相对导入只能用于同一个package里,并且包内的文件不能单独运行,只能在包的外部来调用



|--testmodule.py
|
|--testpy
   |
   |-- __init__.py 模块标志文件
   |
   |-- hello.py    模块1
   |
   |-- test.py             模块2,导入模块1,不可以单独运行
   |
   |-- test2.py    可以单独运行




hello.py
print('hello.py')
class hhh():
    print('hhhh')



test.py
from .hello import hhh
print('test.py')



testmodule.py
from testpy import test
print('OK')


python3 testmodule.py
hello.py
hhhh
test.py
OK




test2.py
from hello import hhh
print('test2.py')


cd testpy 

ls
__init__.py	__pycache__	hello.py	test.py		test2.py

python3 test.py  不可以单独运行

Traceback (most recent call last):
  File "/Users/yourname/Documents/testpy/test.py", line 1, in <module>
    from .hello import hhh
ImportError: attempted relative import with no known parent package

python3 test2.py  可以单独运行
hello.py
hhhh
test2.py

AI什么是模型?什么是参数?什么是大模型?什么是通用模型?什么是推理模型?

一、模型是什么?

(一)、核心定义:

在人工智能(AI)中,模型(Model) 是一个核心概念,可以理解为一种数学工具或计算框架,它通过学习(调整内部参数)数据中的规律,将输入信息转化为有意义的输出结果。简单来说,模型是AI的“大脑”,负责处理问题并给出答案,但它本质上只是一套复杂的数学规则(数学函数),而非真正的意识或智慧。

理解模型的概念,是区分AI技术能力与科幻幻想的关键——它强大但有限,是工具而非生命。

(二)、目标

  • 从已知数据中捕捉隐藏的规律,从而对未知数据做出合理推断。

(三)、通俗理解:菜谱

  • 模型 ≈ 菜谱的步骤
  • 参数 ≈ 调料的比例(盐放多少、火候大小)
  • 数据 ≈ 食材、调料
  • 训练 ≈ 通过多次试做(学习)调整调料(参数)比例,直到菜肴味道达标。

(四)、常见类型

  • 简单模型
  • 如:线性回归 y=wx+b
  • 参数少(仅斜率w 和截距b),适用于数据关系简单的问题(如预测房价与面积的关系)。
  • 复杂模型
  • 如:深度神经网络(如GPT-4、ResNet)
  • 参数可达数十亿,通过多层非线性计算捕捉复杂模式(如语言生成、图像识别)。

(五)、模型如何“学习”?

  • 初始化:模型参数随机设定(类似“蒙题”)。
  • 试错:用输入数据计算输出,对比正确答案计算误差(如预测错误时)。
  • 调整:通过优化算法(如梯度下降)更新参数,减少误差。
  • 收敛:反复迭代后,参数稳定到能较好拟合数据的值。

(六)、模型的关键特性

  • 泛化能力:模型在未知数据上的表现(避免“死记硬背”训练数据)。
  • 可解释性:简单模型(如线性回归)容易理解,复杂模型(如深度学习)常被视为“黑箱”。
  • 计算成本:参数越多,模型越强大,但需要更多算力和数据。

(七)、模型的局限性

  • 数据依赖:模型的表现高度依赖训练数据的质量和多样性(“垃圾进,垃圾出”)。
  • 无真实理解:即使模型能生成流畅文本,也不理解语言的含义(如ChatGPT不知道“苹果”是水果还是公司)。
  • 静态知识:传统模型的知识截止于训练数据的时间点(需定期重新训练)。
继续阅读“AI什么是模型?什么是参数?什么是大模型?什么是通用模型?什么是推理模型?”

AI是什么,真的会思考吗?

一、AI是什么?

人工智能(Artificial Intelligence),英文缩写为AI

AI是通过计算机系统模拟人类智能的技术,能够执行通常需要人类智能的任务,如学习、推理、问题解决和语言理解。

二、AI真的会思考吗?

1、AI的“思考”本质是模式匹配

AI的“智能”本质是对人类行为的统计学模仿,而非真正的思考。

它像一面高度复杂的镜子,反射出人类知识和语言模式,但没有自我意识。

理解这一点,既能欣赏AI技术的强大,也能避免对它的过度神话或恐惧。

  • 数据驱动:AI(如DeepSeek、ChatGPT)通过分析海量数据中的统计规律,学习如何回答问题或生成文本。
    例如,它发现“天空”常与“蓝色”“云朵”等词共现,便学会在特定上下文中使用这些词。
  • 无理解能力:AI并不理解“天空为什么是蓝色”,它只是根据训练数据中人类对类似问题的回答模式,
    组合出合理的文本。就像一台高级的“拼图机器”,按规则拼接已知碎片。

2、AI的“决策”是数学优化

目标函数驱动:AI的行为受预设的数学目标控制,如:语言模型:目标是最佳化“预测下一个词的概率”。围棋AI:目标是“最大化胜率”。

无主观意图:AI不会自主设定目标(如“我想赢”),所有行为都是通过梯度下降等算法,向预设的数学目标逼近。

继续阅读“AI是什么,真的会思考吗?”