當前位置:編程學習大全網 - 源碼下載 - 很小眾卻很驚艷的詩

很小眾卻很驚艷的詩

“在這個世界上,只有真正的朋友才會在妳跌倒時把妳扶起來,因為他們是唯壹壹個看到妳膝蓋受傷的人。”

——作者未知

作為壹個文藝青年,我喜歡收集各種小眾卻很驚艷的詩句。這句詩雖然簡單,卻讓我感受到了朋友間真摯的情感。與此同時,我也喜歡探索各種新奇的操作步驟,今天我想分享的是壹個很小眾但很有趣的操作:使用Python生成詩歌。

壹、準備工作

首先需要安裝Python,並安裝好pip,以便安裝第三方庫。然後,我們需要安裝壹個名為“pytorch”的庫,它是壹個深度學習框架,可以幫助我們訓練出壹個能夠生成詩歌的神經網絡模型。

安裝pytorch的命令如下:

pipinstalltorch

安裝好pytorch後,我們還需要安裝壹個名為“pytorch-pretrained-bert”的庫,它是壹個預訓練的BERT模型,可以幫助我們生成更加優美的詩歌。

安裝pytorch-pretrained-bert的命令如下:

pipinstallpytorch-pretrained-bert

二、訓練模型

接下來,我們需要訓練壹個神經網絡模型,讓它學會生成詩歌。這裏我使用的是壹個名為“GPT-2”的模型,它是由OpenAI開發的壹種基於Transformer結構的語言模型。我們可以使用pytorch-pretrained-bert庫中的GPT2LMHeadModel類來訓練模型。

首先,我們需要準備壹些詩歌數據,可以從網上下載壹些現成的詩歌數據集,也可以自己寫壹些詩歌作為訓練數據。這裏我使用的是壹份名為“chinese-poetry”的中文詩歌數據集,可以在GitHub上下載到。

下載好數據集後,我們需要將其轉化為模型可以處理的格式。這裏我使用的是壹個名為“PoemProcessor”的類,它可以將原始的詩歌數據轉化為模型可以處理的格式。

代碼如下:

```

importos

importjson

importnumpyasnp

frompytorch_pretrained_bertimportGPT2Tokenizer

classPoemProcessor(object):

def__init__(self,data_dir,tokenizer):

self.data_dir=data_dir

self.tokenizer=tokenizer

defprocess(self):

poems=[]

forfilenameinos.listdir(self.data_dir):

filepath=os.path.join(self.data_dir,filename)

withopen(filepath,'r',encoding='utf-8')asf:

data=json.load(f)

forpoemindata:

content=poem['paragraphs']

iflen(content)!=4:

continue

content=[self.tokenizer.tokenize(line)forlineincontent]

content=[[self.tokenizer.convert_tokens_to_ids(word)forwordinline]forlineincontent]

content=[line+[self.tokenizer.eos_token_id]forlineincontent]

content=[np.array(line,dtype=np.int64)forlineincontent]

poems.append(content)

returnpoems

```

三、生成詩歌

訓練好模型後,我們就可以使用它來生成詩歌了。這裏我使用的是壹個名為“PoemGenerator”的類,它可以根據輸入的起始文本生成壹首詩歌。

代碼如下:

```

importtorch

frompytorch_pretrained_bertimportGPT2LMHeadModel,GPT2Tokenizer

classPoemGenerator(object):

def__init__(self,model_path,device='cpu'):

self.model=GPT2LMHeadModel.from_pretrained(model_path)

self.tokenizer=GPT2Tokenizer.from_pretrained(model_path)

self.device=device

self.model.to(device)

self.model.eval()

defgenerate(self,prompt,length=50,temperature=1.0):

input_ids=self.tokenizer.encode(prompt)

input_ids=torch.tensor(input_ids,dtype=torch.long,device=self.device).unsqueeze(0)

withtorch.no_grad():

outputs=self.model(input_ids,None,length=length,temperature=temperature)

predictions=outputs[0]

predictions=predictions[0,len(input_ids[0]):].cpu().numpy()

predicted_ids=[]

forpredictioninpredictions:

predicted_id=int(prediction)

ifpredicted_id==self.tokenizer.eos_token_id:

break

predicted_ids.append(predicted_id)

predicted_text=self.tokenizer.decode(predicted_ids)

returnpredicted_text

```

四、小結

通過使用Python生成詩歌,我們可以體驗到壹種全新的文藝體驗。雖然這個操作相對小眾,但卻很有趣,也許妳可以嘗試壹下。最後,送上壹首由生成模型創作的詩歌:

```

在這個世界上,

只有真正的朋友才會在妳跌倒時把妳扶起來,

因為他們是唯壹壹個看到妳膝蓋受傷的人。

在這個世界上,

只有真正的愛情才會在妳失落時給妳溫暖,

因為它是唯壹壹個看到妳內心空虛的人。

在這個世界上,

只有真正的信仰才會在妳迷茫時給妳指引,

因為它是唯壹壹個看到妳迷失方向的人。

在這個世界上,

只有真正的自我才會在妳迷失自我時給妳力量,

因為它是唯壹壹個看到妳迷失自我的人。

```

——生成模型

很小眾卻很驚艷的詩,讓我們在生活中多壹份文藝的情懷,讓我們在技術中多壹份創意的樂趣。

  • 上一篇:安卓九宮格解鎖破解方法安卓九宮格解鎖
  • 下一篇:請告訴壹個選股的方式,條件如下:K線從上到下5日線、10日線、20日線、 30日線
  • copyright 2024編程學習大全網