生成式人工智能已成为创建新内容和创新内容的强大工具,从迷人的诗歌到逼真的图像。但是当您开始学习这个令人兴奋的领域时,您从哪里开始呢?Python 拥有强大的库和活跃的社区,是一个完美的起点。
本文深入研究了一些最流行的生成人工智能Python工具,为您提供知识和代码示例,以启动您的创意之旅。
1. 使用 Transformer 生成文本
Transformers 库构建在PyTorch之上,提供了一种与GPT-2等预训练语言模型交互的便捷方式。这些模型经过海量文本和代码数据集的训练,可以生成真实且连贯的文本延续。transformers以下是使用该库生成创意文本的示例:
from transformers import GPT2Tokenizer, GPT2LMHeadModel
加载预训练模型和标记符 tokenizer = GPT2Tokenizer.from_pretrained("gpt2") model = GPT2LMHeadModel.from_pretrained("gpt2")
# 定义启动提示 prompt = "Once upon a time, in a land far, far away..."
# 为提示编码并生成文本 encoded_prompt = tokenizer.encode(prompt, return_tensors="pt") output = model.generate(encoded_prompt, max_length=100, num_beams=5)
# 解码生成的文本 generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
# Print the generated text print(prompt + generated_text)
|
- 首先从Hugging Face模型中心加载预先训练好的 GPT-2 模型和标记器。
- 然后,作为种子的提示会被编码成模型能理解的格式。
- 生成函数会接收编码后的提示,并生成最大长度为 100、波束搜索为 5 的单词序列,以探索不同的潜在连续词。
- 最后,生成的文本被解码为人类可读的格式,并与原始提示一起打印出来。
2.使用Diffuser生成图像
Diffusers 是另一个基于 PyTorch 的库,它简化了图像扩散模型的实验。这些模型从随机噪音开始,迭代完善图像,使其与用户提供的文本描述相匹配。下面是一个使用 Diffusers 根据文本提示生成图像的示例:
from diffusers import StableDiffusionPipeline
# 定义文本提示 prompt = "A majestic eagle soaring through a clear blue sky"
# Load the Stable Diffusion pipeline pipe = StableDiffusionPipeline.from_pretrained("runwayml/stable-diffusion-v1-5")
# Generate the image image = pipe(prompt=prompt, num_inference_steps=50)
# Save the generated image image.images[0].save("eagle.png")
|
- 定义了一个描述所需图像的文本提示。
- 然后加载稳定扩散管道,并将提示传递给管道函数。
- num_inference_steps(推理步数)参数控制模型完善图像的迭代次数,迭代步数越多,图像保真度越高。
- 最后,生成的图像会保存为 PNG 文件。
2.1 图像生成:使用 StyleGAN2 绘制像素图像
作为英伟达公司的一个项目,StyleGAN2 可帮助您创建逼真的图像,并对图像风格进行出色的控制。下面让我们来了解一下如何使用 StyleGAN2:
# Install StyleGAN2 library (instructions on official website) import stylegan2_pytorch as sg2
# Load a pre-trained model (e.g., FFHQ) generator = sg2.Generator(ckpt="ffhq.pkl")
定义一个随机潜向量作为起点 latent_vector = sg2.sample_latent(1)
# Generate the image generated_image = generator(latent_vector)
# Display or save the generated image using libraries like OpenCV or PIL
|
安装完成后(详细说明请参阅官方网站),你就可以加载一个像 "ffhq "这样的预训练模型来表示人脸。sample_latent 函数会随机生成一个起点,然后生成器模型会将其转换为图像。
3.使用 Gradio 完成代码
Gradio 并不是生成式人工智能的唯一工具,但它可以成为与这些模型交互和展示这些模型的强大工具。下面是一个使用 Gradio 创建简单代码完成界面的示例:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
# 加载预训练的代码完成模型 tokenizer = AutoTokenizer.from_pretrained("openai/code-davinci-003") model = AutoModelForSequenceClassification.from_pretrained("openai/code-davinci-003")
def complete_code(code): """Completes the provided code snippet.""" encoded_input = tokenizer(code, return_tensors="pt") output = model(**encoded_input) return tokenizer.decode(output.logits.squeeze().argmax(-1), skip_special_tokens=True)
# Create the Gradio interface interface = gradio.Interface(complete_code, inputs="text", outputs="text", title="Code Completion")
# Launch the interface interface.launch()
|
- 它利用了 OpenAI 预先训练好的代码完成模型。
- complete_code 函数将代码片段作为输入,对其进行编码,
- 然后使用模型预测最有可能的续码。预测出的续码会被解码并返回。
- 然后,Gradio 被用来创建一个简单的界面,用户可以输入代码并查看建议的补全结果。
总之
Python 生态系统为探索和利用生成式人工智能的力量提供了丰富的工具。从 TensorFlow 和 PyTorch 这样的成熟库到 Diffusers 和 StyleGAN 这样的专业产品,开发人员可以使用多种工具包来处理各种生成任务。随着这一领域的不断发展,我们可以预见会有更多功能强大、用户友好的工具出现,从而使生成式人工智能的获取和应用更加民主化,以满足各种不同的目的。