1. 文本生成器
编写一个程序,使用预先训练的语言模型(如GPT-2或GPT-3)来生成文本。用户输入一个单词或短语作为提示,程序输出一段继续该提示的文本。
import torch
from transformers import GPT2LMHeadModel, GPT2Tokenizer
# 加载预训练的GPT-3模型和tokenizer
model = GPT2LMHeadModel.from_pretrained('gpt3')
tokenizer = GPT2Tokenizer.from_pretrained('gpt3')
# 设置生成参数
max_length = 100 # 生成文本的最大长度
num_return_sequences = 1 # 生成几个候选文本
temperature = 1.0 # 控制生成文本的多样性,值越大生成的文本越随机
stop_token = '<|endoftext|>' # 停止生成的标记
# 输入提示词
prompt = input("请输入一个单词或短语作为提示:")
# 对提示词进行编码
input_ids = tokenizer.encode(prompt, return_tensors='pt')
# 使用模型生成文本
output = model.generate(
input_ids,
max_length=max_length,
num_return_sequences=num_return_sequences,
temperature=temperature,
pad_token_id=tokenizer.eos_token_id,
eos_token_id=tokenizer.encode(stop_token)[0]
)
# 解码生成的文本
generated_text = tokenizer.decode(output[0], skip_special_tokens=True)
print("生成的文本:")
print(generated_text)
代码的主要步骤如下:
-
加载预训练的GPT-2模型和对应的tokenizer。你需要先安装transformers库。
-
设置一些生成文本的参数,如最大长度、生成候选数、temperature等。
-
提示用户输入一个单词或短语作为提示,并对其进行编码。
-
调用模型的generate方法,传入编码后的提示词,根据设置的参数生成文本。
-
对生成的文本进行解码,去掉特殊token,然后输出结果。
2. 图像标签生成
使用一个预训练的图像识别模型(如Inception或ResNet),编写一个程序,能够接收用户上传的图片,并返回图片中可能包含的对象的标签列表。
import numpy as np
from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image
# 加载预训练的ResNet50模型
model = ResNet50(weights='imagenet')
# 图片预处理函数
def preprocess_image(img_path):
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
return x
# 图片分类函数
def classify_image(img_path):
preprocessed_image = preprocess_image(img_path)
preds = model.predict(preprocessed_image)
return decode_predictions(preds, top=3)[0]
# 测试
img_path = 'test_image.jpg' # 替换为你要分类的图片路径
predictions = classify_image(img_path)
print("图片中可能包含的对象:")
for pred in predictions:
print(pred[1], ":", round(pred[2]*100, 2), "%")
代码的主要步骤如下:
-
加载预训练的ResNet50模型,使用ImageNet数据集上训练的权重。你需要先安装tensorflow和keras库。
-
定义图片预处理函数preprocess_image,将图片缩放到224x224大小,转换为数组格式,并进行必要的归一化处理。
-
定义图片分类函数classify_image,调用预处理函数对图片进行处理,然后将处理后的图片输入到模型中进行预测。
-
使用decode_predictions函数对预测结果进行解码,获取图片中可能包含的对象标签及其对应的置信度。
-
指定要分类的图片路径,调用分类函数,打印出预测结果。