為什么選擇paddle?
1.paddlenlp有很多的例子和開放了很多的預(yù)訓(xùn)練模型,比較容易上手。
2.百度的aistudio上面的課程也比較多,都是百度NLP資深工程師授課。
3.aistudio上有免費(fèi)的GPU訓(xùn)練數(shù)據(jù),且只能使用paddle,阿里云GPU最低配置26元/1小時(shí)。
深度學(xué)習(xí)訓(xùn)練步驟:
- 處理數(shù)據(jù),將文本和標(biāo)簽轉(zhuǎn)化為tokenizer_id,處理為dataset批處理方式將加快模型的訓(xùn)練
- 選擇損失函數(shù)和優(yōu)化器
- 構(gòu)造網(wǎng)絡(luò)模型
- 訓(xùn)練數(shù)據(jù)
- 預(yù)測(cè)數(shù)據(jù)
訓(xùn)練數(shù)據(jù)格式如下:
#train_data.csv
id,title,content,name
1160842,《Nature》:纈氨酸在T細(xì)胞急性淋巴細(xì)胞白血病癌癥生長(zhǎng)中起著關(guān)鍵作用,2021年12月31日獲悉,在一項(xiàng)新的研究中,來(lái)自美國(guó)紐約大學(xué)朗格尼健康中心的研究人員發(fā)現(xiàn)作為許多動(dòng)物蛋白的分子構(gòu)成單元(building block),一種稱為纈氨酸的氨基酸在T細(xì)胞急性淋巴細(xì)胞白血病的癌癥生長(zhǎng)中起著關(guān)鍵作用。他們指出參與使用細(xì)胞中纈氨酸的基因在癌癥T細(xì)胞中比正常T細(xì)胞更活躍。相關(guān)研究結(jié)果于2021年12月22日在線發(fā)表在《Nature》期刊上。,科研進(jìn)展
1160850,《Cancers》:天然產(chǎn)物β-七葉素有潛力阻止卵巢癌轉(zhuǎn)移,2021年12月31日獲悉,在一項(xiàng)新的研究中,來(lái)自美國(guó)芝加哥大學(xué)的研究人員揭示了一種天然產(chǎn)物對(duì)卵巢癌轉(zhuǎn)移的影響。相關(guān)研究結(jié)果發(fā)表在《Cancers》期刊上。研究發(fā)現(xiàn),當(dāng)在小鼠的腫瘤開始生長(zhǎng)之前或之后給予β-七葉素,可以減少卵巢癌細(xì)胞的轉(zhuǎn)移擴(kuò)散。,科研進(jìn)展
1160898,傳信生物完成天使+輪融資,加速推進(jìn)管線開發(fā)和LNP生產(chǎn)平臺(tái)建設(shè),2022年1月1日,傳信生物醫(yī)藥(蘇州)有限公司宣布完成天使+輪融資,本輪投資由建銀醫(yī)療成長(zhǎng)基金和老股東元生創(chuàng)投(美元II期)共同領(lǐng)投,洪泰基金和老股東華蓋資本參與投資。募集資金主要用于加速推進(jìn)管線開發(fā)和LNP生產(chǎn)平臺(tái)建設(shè)。,投融資
1160899,北京天星完成數(shù)億元B輪融資,由OrbiMed(奧博資本)領(lǐng)投,2022年1月1日,中國(guó)企業(yè)北京天星博邁迪醫(yī)療器械有限公司近日宣布完成數(shù)億元B輪融資,本輪融資由OrbiMed(奧博資本)領(lǐng)投,3W Partners跟投,現(xiàn)有股東君聯(lián)資本繼續(xù)追加投資。北京天星引入知名機(jī)構(gòu)投資并獲得原股東跟投,彰顯了公司的卓越實(shí)力與行業(yè)頭部地位。點(diǎn)石資本擔(dān)任獨(dú)家財(cái)務(wù)顧問(wèn)。本輪融資將用于產(chǎn)品研發(fā)及市場(chǎng)拓展。,投融資
1160900,耐德生物完成千萬(wàn)元pre-A輪融資,專注于核酸快檢領(lǐng)域的一體化檢測(cè)平臺(tái),近日,青島耐德生物技術(shù)有限公司宣布完成千萬(wàn)元pre-A輪融資,本輪融資的資金將主要用于手持式核酸一體化快檢系統(tǒng)的研發(fā)落地及項(xiàng)目推廣。本輪融資來(lái)自青島高創(chuàng)投資和里程碑創(chuàng)投。2019年成立全資子公司青島簡(jiǎn)碼基因科技有限公司,專注于醫(yī)療產(chǎn)品開發(fā)和產(chǎn)業(yè)化,簡(jiǎn)碼基因在新冠疫情期間是國(guó)內(nèi)第一批完成新型冠狀病毒核酸檢測(cè)試劑盒的研發(fā)企業(yè),也是國(guó)內(nèi)第一批獲得歐盟CE認(rèn)證的企業(yè)。,投融資
1160901,撥云制藥獲1.3億美元C輪融資,由鼎暉百孚領(lǐng)投,"2022年1月1日,撥云制藥(Cloudbreak Pharma, Inc.)宣布完成1.3億美元的C輪融資。本輪融資由鼎暉百孚領(lǐng)投,高特佳投資、德屹資本、建銀國(guó)際、倚峰資本、關(guān)子資本、盈科資本、信銀遠(yuǎn)大醫(yī)療投資、興證資本、創(chuàng)東方投資、粵駿投資等多家知名機(jī)構(gòu)參與。本輪融資的財(cái)務(wù)顧問(wèn)由“冷杉康舟”負(fù)責(zé),華泰聯(lián)合證券擔(dān)任聯(lián)席財(cái)務(wù)顧問(wèn)。C輪融資所獲款項(xiàng)將用于公司多項(xiàng)產(chǎn)品管線臨床試驗(yàn)、注冊(cè)及商業(yè)化準(zhǔn)備、GMP中試車間建設(shè)、提升公司國(guó)際化標(biāo)準(zhǔn)的生產(chǎn)能力和團(tuán)隊(duì)的擴(kuò)展建設(shè)。",投融資
1160902,科塞爾醫(yī)療完成超億元融資,由聚明創(chuàng)投和約印醫(yī)療基金領(lǐng)投,近日,科塞爾醫(yī)療科技(蘇州)有限公司順利完成超億元融資。本輪融資由聚明創(chuàng)投和約印醫(yī)療基金領(lǐng)投,領(lǐng)創(chuàng)未來(lái)跟投。本輪融資將助力科塞爾醫(yī)療豐富外周產(chǎn)品管線,構(gòu)建外周介入領(lǐng)域一站式治療產(chǎn)品體系,擴(kuò)大生產(chǎn)基地,吸納更多、更優(yōu)秀高端人才集聚??迫麪栣t(yī)療是一家具有血管介入器械全方位生產(chǎn)和研發(fā)能力的平臺(tái)企業(yè),致力于為臨床提供系統(tǒng)解決方案。,投融資
1160903,至真健康完成近億元B輪融資,由華夏恒天資本與福合永信創(chuàng)投聯(lián)合投資,近日,北京至真互聯(lián)網(wǎng)技術(shù)有限公司宣布完成新一輪近億元B輪融資,由華夏恒天資本與福合永信創(chuàng)投聯(lián)合投資。本輪融資將重點(diǎn)用于加大醫(yī)療服務(wù)市場(chǎng)開拓,以及智能硬件產(chǎn)品研發(fā),持續(xù)優(yōu)化升級(jí)AI算法核心能力,并將擴(kuò)大AI軟硬一體化解決方案在三甲醫(yī)院及基層醫(yī)療服務(wù)機(jī)構(gòu)的臨床應(yīng)用,加速在教育、保險(xiǎn)、養(yǎng)老和慢病管理等場(chǎng)景的落地和覆蓋,全面提升全醫(yī)療體系眼健康篩查水平,通過(guò)“人工智能+醫(yī)療”實(shí)現(xiàn)醫(yī)療資源公平化,普惠更廣大群眾。,投融資
1160943,睿刀醫(yī)療肝癌治療設(shè)備臨床試驗(yàn)成功完成第一例患者入組,2021年12月31日,上海睿刀醫(yī)療科技有限公司自主創(chuàng)新研發(fā)的復(fù)合陡脈沖治療設(shè)備(REMD-G2)在首都醫(yī)科大學(xué)附屬北京佑安醫(yī)院完成了第一例肝臟惡性腫瘤受試者入組并成功完成試驗(yàn)組手術(shù),術(shù)中腫瘤消融效果良好,手術(shù)效果完全符合預(yù)期,顯示了睿刀醫(yī)療不可逆電穿孔技術(shù)在肝臟腫瘤局灶消融治療適應(yīng)癥領(lǐng)域,有著突出的臨床效果和巨大優(yōu)勢(shì)。,公司動(dòng)態(tài)
1161010,《細(xì)胞》子刊:益生腸菌羅伊氏乳桿菌能夠抑制結(jié)直腸癌進(jìn)展,口服或有效,近日,來(lái)自美國(guó)密歇根大學(xué)的Yatrik M. Shah和他的同事們發(fā)現(xiàn),羅伊氏乳桿菌以及羅伊氏菌素能夠通過(guò)消耗谷胱甘肽,來(lái)誘導(dǎo)結(jié)直腸癌(CRC)細(xì)胞發(fā)生氧化應(yīng)激,并抑制其核糖體活性,從而抑制CRC進(jìn)展。相關(guān)研究結(jié)果發(fā)表在《Cancer Cell》上。,科研進(jìn)展
1161013,《Science》子刊:年輕時(shí)吃糖太多會(huì)損傷大腦,并誘發(fā)精神疾病,近日,日本東京大學(xué)醫(yī)科學(xué)研究所的研究人員在《Science》子刊《Science Advances》上發(fā)表了研究論文。該研究證明了青春期時(shí)的高糖飲食誘導(dǎo)了精神疾病相關(guān)的行為表型,包括多動(dòng)癥、記憶力衰退和感覺遲鈍。,科研進(jìn)展
1161014,《Cancer Cell》:科研人員繪制出肝內(nèi)膽管癌的多組學(xué)分子特征全景,2022年1月8日獲悉,中國(guó)科學(xué)院上海藥物研究所研究員周虎、中科院院士、復(fù)旦大學(xué)附屬中山醫(yī)院教授樊嘉、復(fù)旦大學(xué)附屬中山醫(yī)院教授高強(qiáng),與中科院分子細(xì)胞科學(xué)卓越創(chuàng)新中心研究員高大明合作,在《Cancer Cell》上在線發(fā)表了研究成果。該研究對(duì)262例iCCA患者的腫瘤組織進(jìn)行蛋白基因組學(xué)分析,通過(guò)整合基因組、轉(zhuǎn)錄組、蛋白質(zhì)組、磷酸化蛋白質(zhì)組等多維度數(shù)據(jù),為肝內(nèi)膽管癌的發(fā)生發(fā)展機(jī)制、分子分型、預(yù)后監(jiān)測(cè)和個(gè)性化治療策略提供了新思路。,科研進(jìn)展
1161032,派爾特醫(yī)療再度沖刺港交所上市,近日,北京派爾特醫(yī)療科技股份有限公司向港交所公開遞交招股書,沖刺港交所主板上市。據(jù)貝多財(cái)經(jīng)了解,這已經(jīng)是派爾特醫(yī)療第二次公開遞表。根據(jù)招股書,派爾特醫(yī)療是智能微創(chuàng)外科手術(shù)解決方案提供商,主營(yíng)業(yè)務(wù)包括設(shè)計(jì)、開發(fā)、制造及銷售外科手術(shù)器械(專注于外科吻合器),并提供定制手術(shù)培訓(xùn)服務(wù)。根據(jù)介紹,派爾特醫(yī)療銷售的外科手術(shù)器械主要為外科吻合器。,公司動(dòng)態(tài)
1161048,《Cancer Research》:抗逆轉(zhuǎn)錄病毒藥物有望治療腦膜瘤和聽神經(jīng)瘤,2022年1月1日獲悉,在一項(xiàng)新的研究中,來(lái)自英國(guó)普利茅斯大學(xué)的研究人員發(fā)現(xiàn)為治療艾滋病/HIV感染(HIV/AIDS)而開發(fā)的抗逆轉(zhuǎn)錄病毒藥物(ART)可能為被診斷為最常見的原發(fā)性腦瘤的患者帶來(lái)希望。這一突破具有重要意義,因?yàn)槿绻M(jìn)一步的研究有了定論,ART藥物可能被開給被診斷為腦膜瘤和聽神經(jīng)瘤(也被稱為前庭神經(jīng)鞘瘤)的患者。相關(guān)研究結(jié)果在線發(fā)表在《Cancer Research》期刊上。,科研進(jìn)展
1161061,南昌醫(yī)療保障局:南昌惠民保將升級(jí)上線,近日,2022年“南昌惠民?!表?xiàng)目正式啟動(dòng)。據(jù)了解,“南昌惠民?!辈幌弈挲g、不限既往癥、投保門檻低、保障全面,只要是南昌市基本醫(yī)療保險(xiǎn)參保人員(包括城鎮(zhèn)職工和城鄉(xiāng)居民參保人)都可投保?!澳喜菝癖!?是目前南昌市唯一一款由政府指導(dǎo)、可使用醫(yī)保個(gè)賬支付,為南昌市基本醫(yī)療保險(xiǎn)參保人專屬定制,與基本醫(yī)療保障有效銜接的補(bǔ)充醫(yī)療保險(xiǎn)產(chǎn)品。保費(fèi)價(jià)格定為128元/年,保障范圍涵蓋自付、自費(fèi)醫(yī)療費(fèi)用以及十余種指定特藥費(fèi)用,總保額最高可達(dá)300萬(wàn)元。,行業(yè)動(dòng)態(tài)
1161081,《臨床腫瘤學(xué)雜志》:研究成果明顯改善晚期肝癌患者預(yù)后生存,近日,全球癌癥治療領(lǐng)域權(quán)威期刊《臨床腫瘤學(xué)雜志》,在線發(fā)表了中山大學(xué)腫瘤防治中心微創(chuàng)介入治療科趙明教授團(tuán)隊(duì)的一項(xiàng)晚期肝癌介入治療領(lǐng)域的III期臨床研究(FOHAIC-1)。該研究首次在全球范圍內(nèi)證實(shí)基于介入技術(shù)的肝動(dòng)脈灌注奧沙利鉑+氟尿嘧啶方案(HAIC-FO)治療晚期肝癌的療效要顯著優(yōu)于索拉非尼靶向治療;同時(shí)首次在基因水平上探索開發(fā)出HAIC-FO療效預(yù)測(cè)模型,填補(bǔ)了中國(guó)晚期肝癌介入治療領(lǐng)域和分子模型療效預(yù)測(cè)領(lǐng)域的空白,為以肝動(dòng)脈灌注化療為基礎(chǔ)的聯(lián)合治療策略提供了循證醫(yī)學(xué)證據(jù)。,科研進(jìn)展
1161089,《EMBO Molecular Medicine》:科研團(tuán)隊(duì)拓展CX5461新用途,2022年1月2日獲悉,中山大學(xué)藥學(xué)院(深圳)鄧文斌教授、陳紅波副教授和程芳副教授共同在《EMBO Molecular Medicine》上發(fā)表了研究文章。該研究發(fā)現(xiàn)一個(gè)核仁定位的蛋白復(fù)合體NF45/ NF90可以通過(guò)調(diào)控核糖體DNA(Ribosomal DNA, rDNA)轉(zhuǎn)錄影響T細(xì)胞的增殖和活化。研究者將一種rDNA特異性轉(zhuǎn)錄抑制劑CX5461應(yīng)用在小鼠皮膚和心臟移植模型中,發(fā)現(xiàn)CX5461相對(duì)于臨床常用藥物FK506能夠更有效延長(zhǎng)移植物的存活時(shí)間,并且具有更低的毒副作用。CX5461是用于治療攜帶BRCA2或PALB2突變的實(shí)體瘤患者的一個(gè)first-in-class藥物。,科研進(jìn)展
1161114,生物科技公司Amberstone Biosciences完成1200萬(wàn)美元A輪融資,用以推進(jìn)其腫瘤微環(huán)境條件性激活產(chǎn)品管線,2022年1月3日,基于單細(xì)胞的免疫治療發(fā)現(xiàn)平臺(tái)和條件活性免疫治療方面擁有獨(dú)特技術(shù)的生物科技公司Amberstone Biosciences,宣布完成1200萬(wàn)美元的A輪融資。此次融資由知名投資機(jī)構(gòu)-維亞生物創(chuàng)新中心(維亞生物)的風(fēng)險(xiǎn)投資部門,凱風(fēng)創(chuàng)投以及創(chuàng)新工場(chǎng)共同領(lǐng)投,長(zhǎng)融資本和其他多家新老投資人的跟投和支持。Amberstone Biosciences計(jì)劃利用此次融資,將其管線中多款腫瘤微環(huán)境條件性激活的候選藥物(包括雙特異性抗體和細(xì)胞因子藥物)推進(jìn)至IND階段。在本輪融資后,來(lái)自維亞生物創(chuàng)新中心的蔡小嘉博士和來(lái)自凱風(fēng)創(chuàng)投的黃昕博士將加入公司的董事會(huì)。,投融資
1161115,四環(huán)醫(yī)藥:軒竹生物完成超6億元B輪融資,由陽(yáng)光人壽領(lǐng)投,2022月1月3日獲悉,四環(huán)醫(yī)藥發(fā)布公告,旗下控股子公司軒竹生物在2021年12月31日完成超6億元B輪融資,本輪融資由陽(yáng)光人壽領(lǐng)投,倚鋒資本、中冀投資、太金資本、國(guó)投泰康、海創(chuàng)母基金、中銀資本、晉江軒弘、陜西金控、灣信資本、德諾資本、華醫(yī)資本等知名投資機(jī)構(gòu)跟投。凱乘資本(WinX Capital)擔(dān)任本輪融資的獨(dú)家財(cái)務(wù)顧問(wèn)。作為四環(huán)醫(yī)藥集團(tuán)旗下首家分拆的創(chuàng)新藥子公司,軒竹生物將繼續(xù)加大創(chuàng)新藥研發(fā)管線的投入建設(shè)和全球布局,持續(xù)增強(qiáng)自主創(chuàng)新能力。,投融資
1161141,完美醫(yī)療大灣區(qū)新店首60日銷售合同達(dá)2880.1萬(wàn)港元,2022年1月3日,完美醫(yī)療宣布大灣區(qū)內(nèi)中環(huán)、尖沙咀及沙田最新的“醫(yī)療美容+醫(yī)療健康”服務(wù)中心(“該等服務(wù)中心”)由其開業(yè)日起首60個(gè)營(yíng)業(yè)日的未經(jīng)審核最新營(yíng)運(yùn)數(shù)據(jù)。該等服務(wù)中心于該期間的銷售合同表現(xiàn)為2880.1萬(wàn)港元。集團(tuán)對(duì)其于未來(lái)季度的業(yè)務(wù)表現(xiàn)感到樂觀。,公司動(dòng)態(tài)
1161142,基石藥業(yè)抗體偶聯(lián)藥物CS5001臨床試驗(yàn)申請(qǐng)獲FDA批準(zhǔn),2022年1月3日,基石藥業(yè)宣布,其抗體偶聯(lián)藥物(ADC)CS5001的臨床試驗(yàn)申請(qǐng)(IND)已獲美國(guó)食品藥品監(jiān)督管理局(FDA)批準(zhǔn)。據(jù)了解,CS5001不僅是全球研發(fā)進(jìn)展最快的靶向ROR1的ADC之一,更具有全球同類藥物最佳潛力。此次IND獲批后,基石藥業(yè)即將在美國(guó)啟動(dòng)人體臨床試驗(yàn),旨在評(píng)估 CS5001在晚期B細(xì)胞淋巴瘤和實(shí)體瘤中的安全性、耐受性、藥代動(dòng)力學(xué)和初步抗腫瘤活性。,FDA動(dòng)態(tài)
1161153,韓美制藥向藹睦醫(yī)療轉(zhuǎn)讓眼藥Luminate在中國(guó)獨(dú)家權(quán)利,2022年1月3日,藹睦醫(yī)療宣布與韓美制藥達(dá)成許可協(xié)議,藹睦醫(yī)療獲得針對(duì)治療中期干性年齡相關(guān)性黃斑變性(Dry AMD) 及其他玻璃體視網(wǎng)膜疾病,同類首創(chuàng)玻璃體內(nèi)注射產(chǎn)品 Risuteganib(又名 “Luminate?”) 在大中華區(qū)(包括中國(guó)大陸、香港、臺(tái)灣和澳門)的獨(dú)家生產(chǎn)、開發(fā)和商業(yè)化權(quán)利。根據(jù)協(xié)議條款,韓美制藥將獲得總計(jì)1.45億美元,其中包括600萬(wàn)美元預(yù)付許可費(fèi),以及相關(guān)開發(fā)、注冊(cè)和銷售的里程碑付款。韓美還將能夠從Risuteganib(Luminate?)的凈銷售額中按比例獲得銷售分成。,公司動(dòng)態(tài)
1161162,《Nature Chemical Biology》:開發(fā)出可作為微型制藥廠CAR-T細(xì)胞,不受T細(xì)胞衰竭影響,2022年1月3日獲悉,在一項(xiàng)新的研究中,來(lái)自美國(guó)紀(jì)念斯隆-凱特琳癌癥中心(SKI)的研究人員設(shè)計(jì)出一種全新的作為一種“微型制藥廠”起作用的CAR-T細(xì)胞:它可以直接向腫瘤提供有毒的藥物載荷,殺死含有癌癥標(biāo)志物的腫瘤細(xì)胞,以及附近不含這種標(biāo)志物的癌細(xì)胞。更重要的是,CAR-T細(xì)胞即使處于衰竭狀態(tài)時(shí)也能產(chǎn)生藥物,而且所產(chǎn)生的藥物不受癌癥抑制。相關(guān)研究結(jié)果于2021年12月30日在線發(fā)表在《Nature Chemical Biology》期刊上。,科研進(jìn)展
驗(yàn)證數(shù)據(jù)
dev_data.csv
id,title,content,name
1346133,光生物調(diào)節(jié)公司JustLight啟動(dòng)Sunflower Rx臨床研究,治療老年癡呆,"2022年7月5日,光生物調(diào)節(jié)公司JustLight正式啟動(dòng)Sunflower Rx臨床研究。Sunflower Rx是一種智能光生物調(diào)節(jié)(PBM)治療器械,用于治療老年癡呆,其利用紅光或近紅外光(600–1,100nm)來(lái)治愈、修復(fù)和激活人體內(nèi)的細(xì)胞。它可根據(jù)患者臨床數(shù)據(jù)自動(dòng)調(diào)整光照的強(qiáng)度和波長(zhǎng),也可以通過(guò)應(yīng)用程序自動(dòng)化控制,患者能夠一個(gè)人在家中接受治療。",科研進(jìn)展
1346135,核心醫(yī)療Corheart 6人工心臟完成臨床入組,2022年7月4日,核心醫(yī)療自主研發(fā)的Corheart 6植入式左心室輔助系統(tǒng)臨床注冊(cè)試驗(yàn)宣告全數(shù)患者入組完成。Corheart 6是一種持久性機(jī)械循環(huán)輔助裝置,用于為進(jìn)展期難治性左心衰患者血液循環(huán)提供機(jī)械支持,含心臟移植前或恢復(fù)心臟功能的過(guò)渡治療。2022年1月20日,由中國(guó)醫(yī)學(xué)科學(xué)院阜外醫(yī)院牽頭,全國(guó)12家臨床研究中心共同參與的Corheart 6植入式左心室輔助系統(tǒng)前瞻性、多中心、單組臨床評(píng)估試驗(yàn)正式獲NMPA批準(zhǔn)啟動(dòng)。,公司動(dòng)態(tài)
1346135,核心醫(yī)療Corheart 6人工心臟完成臨床入組,2022年7月4日,核心醫(yī)療自主研發(fā)的Corheart 6植入式左心室輔助系統(tǒng)臨床注冊(cè)試驗(yàn)宣告全數(shù)患者入組完成。Corheart 6是一種持久性機(jī)械循環(huán)輔助裝置,用于為進(jìn)展期難治性左心衰患者血液循環(huán)提供機(jī)械支持,含心臟移植前或恢復(fù)心臟功能的過(guò)渡治療。2022年1月20日,由中國(guó)醫(yī)學(xué)科學(xué)院阜外醫(yī)院牽頭,全國(guó)12家臨床研究中心共同參與的Corheart 6植入式左心室輔助系統(tǒng)前瞻性、多中心、單組臨床評(píng)估試驗(yàn)正式獲NMPA批準(zhǔn)啟動(dòng)。,科研進(jìn)展
1346136,九典制藥高端制劑研發(fā)產(chǎn)業(yè)園即將全面完工,或新增產(chǎn)值60億,2022年7月11日獲悉,九典制藥高端制劑研發(fā)產(chǎn)業(yè)園預(yù)計(jì)10月底全面完工,達(dá)產(chǎn)后新增產(chǎn)值60億元。據(jù)悉,九典制藥高端制劑研發(fā)產(chǎn)業(yè)園位于瀏陽(yáng)經(jīng)開區(qū)健康大道西側(cè),今年2月7日開始建設(shè)。經(jīng)過(guò)數(shù)百名建設(shè)者加班加點(diǎn)建設(shè),目前樁基建設(shè)已經(jīng)全部完成,進(jìn)入了主體施工階段,預(yù)計(jì)10月底全面完工,11月份進(jìn)行試生產(chǎn),項(xiàng)目全面投產(chǎn)后新增年產(chǎn)值達(dá)60億元,年利稅8億元以上。,公司動(dòng)態(tài)
1346138,密歇根大學(xué)研究人員首次實(shí)現(xiàn)利用腦機(jī)接口控制多指運(yùn)動(dòng),2022年7月4日,密歇根大學(xué)的研究人員實(shí)現(xiàn)了利用安裝在可植入設(shè)備上的計(jì)算機(jī)解釋靈長(zhǎng)類動(dòng)物精確、高速、多指運(yùn)動(dòng)的大腦信號(hào)。這一關(guān)鍵步驟的實(shí)現(xiàn)使那些失去肢體功能的人能夠更自然、實(shí)時(shí)地控制假肢,甚至是他們自己的手。,科研進(jìn)展
標(biāo)簽label.csv
#label.csv
label_id,label_name
"1","投融資"
"2","收購(gòu)"
"3","商業(yè)合作"
"4","政策"
"5","人事變更"
"6","新品發(fā)布"
"7","產(chǎn)品獲批"
"8","業(yè)績(jī)發(fā)布"
"9","FDA動(dòng)態(tài)"
"10","行業(yè)動(dòng)態(tài)"
"11","公司動(dòng)態(tài)"
"12","報(bào)告"
"13","盤點(diǎn)"
"14","科研進(jìn)展"
"15","人物觀點(diǎn)"
"16","會(huì)議"
"17","聚焦兩會(huì)"
"18","招標(biāo)公告"
"19","新型冠狀病毒"
"20","中標(biāo)公告"
"21","上市公司公告"
訓(xùn)練train.py
#train.py
from functools import partial
import argparse
import os
import random
import time
import distutils.util
import numpy as np
import paddle
import paddle.nn.functional as F
from paddlenlp.data import Stack, Tuple, Pad
from paddlenlp.transformers import AutoModelForSequenceClassification, AutoTokenizer
from paddlenlp.transformers import LinearDecayWithWarmup
from data_loader import NewsTopicDataset
# yapf: disable
parser = argparse.ArgumentParser()
parser.add_argument("--save_dir", default='./checkpoint', type=str,
help="The output directory where the model checkpoints will be written.")
parser.add_argument("--dataset", choices=["chnsenticorp", "xnli_cn"], default="chnsenticorp", type=str,
help="Dataset for classfication tasks.")
parser.add_argument("--max_seq_length", default=128, type=int,
help="The maximum total input sequence length after tokenization. "
"Sequences longer than this will be truncated, sequences shorter will be padded.")
parser.add_argument("--batch_size", default=32, type=int, help="Batch size per GPU/CPU for training.")
parser.add_argument("--learning_rate", default=5e-5, type=float, help="The initial learning rate for Adam.")
parser.add_argument("--weight_decay", default=0.0, type=float, help="Weight decay if we apply some.")
parser.add_argument("--epochs", default=3, type=int, help="Total number of training epochs to perform.")
parser.add_argument("--warmup_proportion", default=0.0, type=float,
help="Linear warmup proption over the training process.")
parser.add_argument("--valid_steps", default=100, type=int, help="The interval steps to evaluate model performance.")
parser.add_argument("--save_steps", default=100, type=int, help="The interval steps to save checkppoints.")
parser.add_argument("--logging_steps", default=10, type=int, help="The interval steps to logging.")
parser.add_argument("--init_from_ckpt", type=str, default=None, help="The path of checkpoint to be loaded.")
parser.add_argument("--seed", type=int, default=1000, help="random seed for initialization")
parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu', 'npu'], default="cpu",
help="Select which device to train model, defaults to gpu.")
parser.add_argument("--use_amp", type=distutils.util.strtobool, default=False, help="Enable mixed precision training.")
parser.add_argument("--scale_loss", type=float, default=2 ** 15, help="The value of scale_loss for fp16.")
args = parser.parse_args()
# yapf: enable
def set_seed(seed):
"""sets random seed"""
random.seed(seed)
np.random.seed(seed)
paddle.seed(seed)
@paddle.no_grad()
def evaluate(model, criterion, metric, data_loader):
"""
Given a dataset, it evals model and computes the metric.
Args:
model(obj:`paddle.nn.Layer`): A model to classify texts.
data_loader(obj:`paddle.io.DataLoader`): The dataset loader which generates batches.
criterion(obj:`paddle.nn.Layer`): It can compute the loss.
metric(obj:`paddle.metric.Metric`): The evaluation metric.
"""
model.eval()
metric.reset()
losses = []
for batch in data_loader:
input_ids, token_type_ids, labels = batch
logits = model(input_ids, token_type_ids)
loss = criterion(logits, labels)
losses.append(loss.numpy())
correct = metric.compute(logits, labels)
metric.update(correct)
accu = metric.accumulate()
print("eval loss: %.5f, accuracy: %.5f" % (np.mean(losses), accu))
model.train()
metric.reset()
def do_train():
paddle.set_device(args.device)
rank = paddle.distributed.get_rank()
if paddle.distributed.get_world_size() > 1:
paddle.distributed.init_parallel_env()
set_seed(args.seed)
model = AutoModelForSequenceClassification.from_pretrained(
'ernie-3.0-medium-zh', num_classes=21)
# 有21個(gè)標(biāo)簽,所以這里的num_classes為21
tokenizer = AutoTokenizer.from_pretrained("ernie-3.0-medium-zh")
batchify_fn = lambda samples, fn=Tuple(
Pad(axis=0, pad_val=tokenizer.pad_token_id), # input
Pad(axis=0, pad_val=tokenizer.pad_token_type_id), # segment
Stack(dtype="int64") # label
): [data for data in fn(samples)]
#將文本轉(zhuǎn)化為id
train_ds = NewsTopicDataset.from_file("./data/train_data.csv", tokenizer)
train_sampler = paddle.io.RandomSampler(data_source=train_ds)
train_batch_sampler = paddle.io.BatchSampler(sampler=train_sampler, batch_size=8)
train_data_loader = paddle.io.DataLoader(dataset=train_ds,
batch_sampler=train_batch_sampler,
collate_fn=batchify_fn,
return_list=True)
dev_ds = NewsTopicDataset.from_file("./data/dev_data.csv", tokenizer)
dev_sampler = paddle.io.RandomSampler(data_source=dev_ds)
dev_batch_sampler = paddle.io.BatchSampler(sampler=dev_sampler, batch_size=8)
dev_data_loader = paddle.io.DataLoader(dataset=train_ds,
batch_sampler=dev_batch_sampler,
collate_fn=batchify_fn,
return_list=True)
if args.init_from_ckpt and os.path.isfile(args.init_from_ckpt):
state_dict = paddle.load(args.init_from_ckpt)
model.set_dict(state_dict)
model = paddle.DataParallel(model)
num_training_steps = len(train_data_loader) * args.epochs
lr_scheduler = LinearDecayWithWarmup(args.learning_rate, num_training_steps,
args.warmup_proportion)
# Generate parameter names needed to perform weight decay.
# All bias and LayerNorm parameters are excluded.
decay_params = [
p.name for n, p in model.named_parameters()
if not any(nd in n for nd in ["bias", "norm"])
]
#設(shè)置優(yōu)化器
optimizer = paddle.optimizer.AdamW(
learning_rate=lr_scheduler,
parameters=model.parameters(),
weight_decay=args.weight_decay,
apply_decay_param_fun=lambda x: x in decay_params)
#設(shè)置損失函數(shù)
criterion = paddle.nn.loss.CrossEntropyLoss()
metric = paddle.metric.Accuracy()
if args.use_amp:
scaler = paddle.amp.GradScaler(init_loss_scaling=args.scale_loss)
global_step = 0
tic_train = time.time()
for epoch in range(1, args.epochs + 1):
for step, batch in enumerate(train_data_loader, start=1):
input_ids, token_type_ids, labels = batch
with paddle.amp.auto_cast(
args.use_amp,
custom_white_list=["layer_norm", "softmax", "gelu"],
):
logits = model(input_ids, token_type_ids)
loss = criterion(logits, labels)
probs = F.softmax(logits, axis=1)
correct = metric.compute(probs, labels)
metric.update(correct)
acc = metric.accumulate()
if args.use_amp:
scaler.scale(loss).backward()
scaler.minimize(optimizer, loss)
else:
loss.backward()
optimizer.step()
lr_scheduler.step()
optimizer.clear_grad()
global_step += 1
if global_step % args.logging_steps == 0 and rank == 0:
time_diff = time.time() - tic_train
print(
"global step %d, epoch: %d, batch: %d, loss: %.5f, accuracy: %.5f, speed: %.2f step/s"
% (global_step, epoch, step, loss, acc,
args.logging_steps / time_diff))
tic_train = time.time()
if global_step % args.valid_steps == 0 and rank == 0:
evaluate(model, criterion, metric, dev_data_loader)
tic_train = time.time()
if global_step % args.save_steps == 0 and rank == 0:
save_dir = os.path.join(args.save_dir, "model_%d" % global_step)
if not os.path.exists(save_dir):
os.makedirs(save_dir)
model._layers.save_pretrained(save_dir)
tokenizer.save_pretrained(save_dir)
tic_train = time.time()
if __name__ == "__main__":
do_train()
數(shù)據(jù)處理
#data_loader.py
import collections
import json
import os
import sys
from typing import Optional, List, Union, Dict
from dataclasses import dataclass
import numpy as np
import pandas as pd
import paddle
from paddlenlp.data import Stack, Tuple, Pad
from tqdm import tqdm
from paddlenlp.transformers import AutoTokenizer, PretrainedTokenizer
from paddlenlp.utils.log import logger
def convert_example_to_feature(
example,
tokenizer: PretrainedTokenizer,
max_length: Optional[int] = 512,
is_test=False):
content = example['content']
encoded_inputs = tokenizer(text=content, max_seq_len=max_length)
input_ids = encoded_inputs["input_ids"]
token_type_ids = encoded_inputs["token_type_ids"]
if not is_test:
label = np.array([example["label_id"]], dtype="int64")
tokenized_output = [
input_ids, token_type_ids, label
]
else:
tokenized_output = [
input_ids, token_type_ids
]
return tuple(tokenized_output)
class NewsTopicDataset(paddle.io.Dataset):
def __init__(self,
data,
tokenizer2,
max_length=512):
super(NewsTopicDataset, self).__init__()
self.data = data
self.tokenizer = tokenizer2
self.max_seq_length = max_length
def __len__(self):
return len(self.data)
def __getitem__(self, item):
example = self.data[item]
input_feature = convert_example_to_feature(example, self.tokenizer,
self.max_seq_length)
return [
np.array(input_feature[0], dtype="int64"),
np.array(input_feature[1], dtype="int64"),
np.array(input_feature[2], dtype="int64")
]
@classmethod
def from_file(cls,
file_path: Union[str, os.PathLike],
tokenizer: PretrainedTokenizer,
max_length: Optional[int] = 512):
assert os.path.exists(file_path) and os.path.isfile(
file_path), f"{file_path} dose not exists or is not a file."
label_map_path = os.path.join(os.path.dirname(file_path),
"label.csv")
assert os.path.exists(label_map_path) and os.path.isfile(
label_map_path
), f"{label_map_path} dose not exists or is not a file."
header = pd.read_csv(label_map_path, nrows=0)
head_row_list = list(header)
csv_lists = pd.read_csv(label_map_path, usecols=head_row_list)
lists = csv_lists.values
label_map = {}
for it in lists:
label_map[it[1]] = it[0]
header = pd.read_csv(file_path, nrows=0)
head_row_list = list(header)
csv_lists = pd.read_csv(file_path, usecols=head_row_list)
lists = csv_lists.values
data = []
for it in lists:
tmp = {'content': it[2],
'label_id': label_map.get(it[3], 0)
}
data.append(tmp)
return cls(data, tokenizer, max_length)
if __name__ == "__main__":
tokenizer = AutoTokenizer.from_pretrained("ernie-3.0-medium-zh")
d = NewsTopicDataset.from_file("./data/train_data.csv", tokenizer)
sampler = paddle.io.RandomSampler(data_source=d)
batch_sampler = paddle.io.BatchSampler(sampler=sampler, batch_size=2)
batchify_fn = lambda samples, fn=Tuple(
Pad(axis=0, pad_val=tokenizer.pad_token_id), # input
Pad(axis=0, pad_val=tokenizer.pad_token_type_id), # segment
Stack(dtype="int64") # label
): [data for data in fn(samples)]
train_loader = paddle.io.DataLoader(dataset=d,
batch_sampler=batch_sampler,
collate_fn=batchify_fn,
return_list=True)
data_list = train_loader
for i, dd in enumerate(data_list):
print("*" * 50)
print(dd)
if i > 5:
sys.exit(0)
預(yù)測(cè)模型
#predict.py
import argparse
import os
import sys
import paddle
import paddle.nn.functional as F
from paddlenlp.data import Tuple, Pad
from paddlenlp.transformers import AutoModelForSequenceClassification, AutoTokenizer
import numpy as np
import pandas as pd
from data_loader import convert_example_to_feature
# yapf: disable
parser = argparse.ArgumentParser()
parser.add_argument("--params_path", type=str, required=False, default="checkpoint/model_6000/model_state.pdparams",
help="The path to model parameters to be loaded.")
parser.add_argument("--label_map_path", type=str, required=False, default="./data/label.csv",
help="The path to model parameters to be loaded.")
parser.add_argument("--test_data_path", type=str, required=False, default="./data/test_data.csv",
help="The path to model parameters to be loaded.")
parser.add_argument("--max_seq_length", type=int, default=512,
help="The maximum total input sequence length after tokenization. "
"Sequences longer than this will be truncated, sequences shorter will be padded.")
parser.add_argument("--batch_size", type=int, default=32, help="Batch size per GPU/CPU for training.")
parser.add_argument('--device', choices=['cpu', 'gpu', 'xpu', 'npu'], default="cpu",
help="Select which device to train model, defaults to gpu.")
args = parser.parse_args()
# yapf: enable
def predict(model, data, tokenizer, label_map, batch_size=1):
"""
Predicts the data labels.
Args:
model (obj:`paddle.nn.Layer`): A model to classify texts.
data (obj:`List(Example)`): The processed data whose each element is a Example (numedtuple) object.
A Example object contains `text`(word_ids) and `seq_len`(sequence length).
tokenizer(obj:`PretrainedTokenizer`): This tokenizer inherits from :class:`~paddlenlp.transformers.PretrainedTokenizer`
which contains most of the methods. Users should refer to the superclass for more information regarding methods.
label_map(obj:`dict`): The label id (key) to label str (value) map.
batch_size(obj:`int`, defaults to 1): The number of batch.
Returns:
results(obj:`dict`): All the predictions labels.
"""
examples = []
for text in data:
example = {"content": text}
input_ids, token_type_ids = convert_example_to_feature(
example,
tokenizer,
max_length=args.max_seq_length,
is_test=True)
examples.append((input_ids, token_type_ids))
# Seperates data into some batches.
batches = [
examples[idx:idx + batch_size]
for idx in range(0, len(examples), batch_size)
]
batchify_fn = lambda samples, fn=Tuple(
Pad(axis=0, pad_val=tokenizer.pad_token_id), # input
Pad(axis=0, pad_val=tokenizer.pad_token_type_id), # segment
): fn(samples)
results = []
model.eval()
for batch in batches:
input_ids, token_type_ids = batchify_fn(batch)
input_ids = paddle.to_tensor(input_ids)
token_type_ids = paddle.to_tensor(token_type_ids)
logits = model(input_ids, token_type_ids)
probs = F.softmax(logits, axis=1)
idx = paddle.argmax(probs, axis=1).numpy()
idx = idx.tolist()
labels = [label_map[i] for i in idx]
print(labels)
results.extend(labels)
return results
if __name__ == "__main__":
paddle.set_device(args.device)
test_data_path = args.test_data_path
# header = pd.read_csv(test_data_path, nrows=0)
# head_row_list = list(header)
csv_lists = pd.read_csv(test_data_path, usecols=["content"])
lists = csv_lists.values
test_list = []
for it in lists:
test_list.append(it[0])
label_map_path = args.label_map_path
header = pd.read_csv(label_map_path, nrows=0)
head_row_list = list(header)
csv_lists = pd.read_csv(label_map_path, usecols=head_row_list)
lists = csv_lists.values
label_map = {}
for it in lists:
label_map[it[0]] = it[1]
model = AutoModelForSequenceClassification.from_pretrained(
'checkpoint/model_6000', num_classes=len(label_map))
tokenizer = AutoTokenizer.from_pretrained('checkpoint/model_6000')
Total_params = 0
for p in model.parameters():
mulValue = np.prod(p.shape) # 使用numpy prod接口計(jì)算數(shù)組所有元素之積
Total_params += mulValue # 總參數(shù)量
print(f'Total params: {Total_params}')
results = predict(model,
test_list,
tokenizer,
label_map,
batch_size=args.batch_size)
for idx, text in enumerate(test_list):
print('Data: {} \t Lable: {}'.format(text, results[idx]))
python train.py --device cpu
多分類:
損失函數(shù):CrossEntropyLoss
激活函數(shù):softmax
多標(biāo)簽分類(一句話有多個(gè)標(biāo)簽):
損失函數(shù):BCEWithLogitsLoss
激活函數(shù):sigmod