Create ML : 如何在Xcode 10中訓(xùn)練您自己的機(jī)器學(xué)習(xí)模型

原文作者:?Sai Kambampati

原文鏈接

如果你不知道存捺,蘋(píng)果的全球開(kāi)發(fā)者大會(huì)本周召開(kāi)了!這是一件大事座泳,對(duì)蘋(píng)果目前的軟件和框架都做了很多改進(jìn)。其中一個(gè)框架是Create ML。

去年机断,蘋(píng)果(Apple)推出了Core ML:這是一種快速的方法,可以讓你用盡可能少的代碼將預(yù)先培訓(xùn)好的機(jī)器學(xué)習(xí)模型導(dǎo)入應(yīng)用程序中!今年绣夺,有了Create ML吏奸,蘋(píng)果給了我們開(kāi)發(fā)人員創(chuàng)建我們自己的機(jī)器學(xué)習(xí)模型直接進(jìn)入Xcode的平臺(tái)的能力!我們只需要一些數(shù)據(jù)就行了!目前,Create ML允許文本陶耍、圖像和表作為數(shù)據(jù)奋蔚。然而,由于這是大多數(shù)ML應(yīng)用程序的組成部分烈钞,這應(yīng)該很好地服務(wù)于您的目的!我將向您展示如何使用這三種類(lèi)型的數(shù)據(jù)創(chuàng)建一個(gè)ML模型.


圖片來(lái)源:Apple


注:本教程構(gòu)建在Xcode 10 beta和macOS Mojave beta之上泊碑。請(qǐng)確保您升級(jí)了Xcode和macOS,以便遵循本教程.


為什么創(chuàng)建ML??

您可能想知道毯欣,為什么我要?jiǎng)?chuàng)建ML?這是因?yàn)樗哪芰β?chuàng)建構(gòu)建在軟件中的機(jī)器學(xué)習(xí)基礎(chǔ)設(shè)施ML。當(dāng)你下載iOS 12或macOS Mojave時(shí)酗钞,你也在下載一些機(jī)器學(xué)習(xí)框架腹忽。這樣来累,當(dāng)您創(chuàng)建自己的ML模型時(shí),它會(huì)占用更少的空間窘奏,因?yàn)榇蠖鄶?shù)數(shù)據(jù)已經(jīng)在用戶(hù)的設(shè)備上嘹锁。

創(chuàng)建ML如此流行的另一個(gè)原因是它易于使用。創(chuàng)建ML所需要做的就是擁有一個(gè)廣泛的數(shù)據(jù)集(文本或圖像)着裹,編寫(xiě)幾行代碼领猾,然后運(yùn)行游樂(lè)場(chǎng)!這比其他流行的工具如Tensorflow和Caffe要簡(jiǎn)單得多。這些工具需要大量的代碼骇扇,并且沒(méi)有友好的視覺(jué)界面摔竿。創(chuàng)建ML是建立在Xcode操場(chǎng)上的,所以您可以熟悉它少孝,最重要的是拯坟,它是用Swift完成的!


注意:?

在本教程中,我將只向您展示如何使用create ML創(chuàng)建自己的ML模型韭山。

在撰寫(xiě)本文時(shí)郁季,iOS 12和macOS Mojave仍在測(cè)試階段。要成功運(yùn)行本教程钱磅,您需要運(yùn)行macOS Mojave(10.14)和Xcode 10 beta梦裂。讓我們開(kāi)始吧!

圖像分類(lèi)器模型

我們將首先開(kāi)始構(gòu)建一個(gè)圖像分類(lèi)器模型。我們可以添加任意多的標(biāo)簽盖淡,但是為了簡(jiǎn)單起見(jiàn)年柠,我們將構(gòu)建一個(gè)識(shí)別水果為蘋(píng)果或香蕉的圖像分類(lèi)器。你可以在這里下載圖片褪迟。

打開(kāi)文件夾時(shí)冗恨,您將注意到另外兩個(gè)文件夾:訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)。每個(gè)文件夾都有蘋(píng)果和香蕉的混合圖片味赃。有大約20張?zhí)O果圖片和20張香蕉圖片掀抹,分別被稱(chēng)為測(cè)試數(shù)據(jù)和80張?zhí)O果圖片和80張香蕉圖片。我們將在訓(xùn)練數(shù)據(jù)中使用圖像來(lái)訓(xùn)練分類(lèi)器心俗,然后使用測(cè)試數(shù)據(jù)來(lái)確定其準(zhǔn)確性傲武。


如果您想構(gòu)建自己的圖像分類(lèi)器,那么將數(shù)據(jù)集分割為80-20是很重要的城榛。大約80%的圖像用于訓(xùn)練數(shù)據(jù)揪利,其余部分用于測(cè)試數(shù)據(jù)。這樣狠持,您的分類(lèi)器就有更多的數(shù)據(jù)需要訓(xùn)練疟位。在每個(gè)文件夾中,將圖像放在各自的文件夾中喘垂。根據(jù)圖像的類(lèi)別標(biāo)簽命名這些文件夾甜刻。



現(xiàn)在敢订,讓我們打開(kāi)Xcode,點(diǎn)擊Get Started with a playground罢吃。當(dāng)您這樣做時(shí),將打開(kāi)一個(gè)新窗口昭齐。這是重要的部分:在macOS下尿招,選擇如下所示的空白模板.


在macOS而不是iOS下選擇空白模板是至關(guān)重要的,因?yàn)閕OS平臺(tái)不支持CreateML框架阱驾。

給你的playground命名就谜,把它保存到你想要的任何地方。Coding Now !?


代碼如下:?

現(xiàn)在我要向你們展示的東西會(huì)讓你們大吃一驚里覆。你只需要三行代碼!讓我來(lái)告訴你!刪除playdround上的一切丧荐,并輸入以下內(nèi)容:

確保在Xcode playground中啟用Live View特性,您將能夠看到可視化界面!

CreateMLUI是一個(gè)與CreateML類(lèi)似的框架喧枷,但它有一個(gè)UI虹统。到目前為止,CreateMLUI只能用于圖像分類(lèi).?

用戶(hù)界面

在實(shí)時(shí)視圖中隧甚,您將看到我們需要?jiǎng)h除圖像以開(kāi)始!這是相當(dāng)簡(jiǎn)單的车荔。獲取培訓(xùn)數(shù)據(jù)文件夾,并將整個(gè)文件夾放入該區(qū)域戚扳。



當(dāng)你放下文件夾的時(shí)候忧便,你會(huì)看到playground開(kāi)始訓(xùn)練圖像分類(lèi)器!在控制臺(tái)中,您將看到在什么時(shí)間處理圖像的數(shù)量帽借,以及您的數(shù)據(jù)被訓(xùn)練的百分比!

這需要大約30秒(取決于你的設(shè)備)珠增。當(dāng)一切都完成處理后,您應(yīng)該看到如下內(nèi)容:

您將看到一張卡片砍艾,上面有三個(gè)標(biāo)簽:培訓(xùn)蒂教、驗(yàn)證和評(píng)估。培訓(xùn)是指Xcode成功培訓(xùn)的培訓(xùn)數(shù)據(jù)的百分比脆荷。這應(yīng)該讀100%悴品。

在培訓(xùn)期間,Xcode將培訓(xùn)數(shù)據(jù)分發(fā)到80-20简烘。在訓(xùn)練了80%的訓(xùn)練數(shù)據(jù)之后苔严,Xcode在剩下的20%上運(yùn)行分類(lèi)器。這就是驗(yàn)證的含義:分類(lèi)器能夠得到正確的訓(xùn)練圖像的百分比孤澎。通常届氢,這可能會(huì)有所不同,因?yàn)閄code可能并不總是分割相同的數(shù)據(jù)覆旭。在我的例子中退子,Xcode有88%的有效性岖妄。我不會(huì)太擔(dān)心這個(gè)。評(píng)估是空的寂祥,因?yàn)槲覀儧](méi)有給分類(lèi)器任何測(cè)試數(shù)據(jù)〖雠埃現(xiàn)在做一下!

當(dāng)一切都完成后,你的評(píng)估分?jǐn)?shù)應(yīng)該是100%丸凭。這意味著分類(lèi)器正確地標(biāo)記了所有的圖像!

如果你對(duì)你的結(jié)果滿(mǎn)意福扬,剩下的就是保存文件了!單擊圖像分類(lèi)器標(biāo)題旁邊的箭頭硝逢。應(yīng)該出現(xiàn)一個(gè)下拉菜單新锈,顯示所有的元數(shù)據(jù)揭璃。將元數(shù)據(jù)更改為您想要的方式军援,并將其保存到您想要的位置!

打開(kāi)CoreML模型并查看元數(shù)據(jù)排宰。它有你填的所有東西!恭喜你!您是您自己的圖像分類(lèi)器模型的作者摄乒,它非常強(qiáng)大瑰煎,并且只需要17 KB!

你可以把它導(dǎo)入你的iOS應(yīng)用程序屹篓,看看它是如何運(yùn)行的!接下來(lái)莉御,讓我們看看如何創(chuàng)建自己的文本分類(lèi)器撇吞。這需要更多的代碼!


文本分類(lèi)器模型

接下來(lái),我們將使用Create ML構(gòu)建一個(gè)垃圾郵件檢測(cè)器模型礁叔。這是一種模型梢夯,它確定消息是垃圾郵件還是火腿(火腿不是垃圾郵件)。就像所有的機(jī)器學(xué)習(xí)應(yīng)用程序一樣晴圾,我們需要一些數(shù)據(jù)颂砸。?下載示例的JSON文件

打開(kāi)它死姚,您可以看到它是一個(gè)包含大量消息的JSON表人乓,每個(gè)消息都標(biāo)記為spam或ham。與應(yīng)用程序中可能需要的數(shù)據(jù)相比都毒,這個(gè)示例中的數(shù)據(jù)量非常小色罚。

記住:更多的數(shù)據(jù)會(huì)更準(zhǔn)確!但是,最好確保您的數(shù)據(jù)對(duì)ML任務(wù)有效账劲。如果您使用的數(shù)據(jù)損壞或可能會(huì)破壞您的結(jié)果戳护,它將極大地改變您的分類(lèi)器的結(jié)果


代碼:?

現(xiàn)在瀑焦,我們必須要求Xcode對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練腌且。雖然我們沒(méi)有一個(gè)漂亮簡(jiǎn)單的UI,但是我們使用的代碼并不難榛瓮。類(lèi)型如下:


import CreateML

import Foundation

//1

let data = try MLDataTable(contentsOf: URL(fileURLWithPath: "/Users/Path/To/spam.json"))

let (trainingData, testingData) = data.randomSplit(by: 0.8, seed: 5)

let spamClassifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "label")

//2

let trainingAccuracy = (1.0 - spamClassifier.trainingMetrics.classificationError) * 100

let validationAccuracy = (1.0 - spamClassifier.validationMetrics.classificationError) * 100

//3

let evaluationMetrics = spamClassifier.evaluation(on: testingData)

let evaluationAccuracy = (1.0 - evaluationMetrics.classificationError) * 100

//4

let metadata = MLModelMetadata(author: "Sai Kambampati", shortDescription: "A model trained to classify spam messages", version: "1.0")

try spamClassifier.write(to: URL(fileURLWithPath: "/Users/Path/To/Save/SpamDetector.mlmodel"), metadata: metadata)



讓我解釋一下發(fā)生了什么铺董。大多數(shù)代碼應(yīng)該相當(dāng)簡(jiǎn)單!

1. 首先,我們創(chuàng)建一個(gè)名為data的常量禀晓,它是垃圾郵件的一種MLDataTable精续。json文件坝锰。MLDataTable是一個(gè)全新的對(duì)象,用于創(chuàng)建一個(gè)決定訓(xùn)練或評(píng)估ML模型的表重付。我們將數(shù)據(jù)分為trainingData和testingData顷级。和以前一樣,比率是80-20确垫,種子是5弓颈。種子是指分類(lèi)器的起點(diǎn)。然后我們用我們的訓(xùn)練數(shù)據(jù)定義一個(gè)叫做spamClassifier的MLTextClassifier森爽,定義數(shù)據(jù)的值是文本,什么值是標(biāo)簽嚣镜。

2. 創(chuàng)建了兩個(gè)變量爬迟,名為trainingAccuracy和validationAccuracy,用于確定分類(lèi)器的準(zhǔn)確程度菊匿。在側(cè)窗格中付呕,您可以看到百分比。

3. 我們還檢查評(píng)估的執(zhí)行情況跌捆。(請(qǐng)記住徽职,評(píng)價(jià)是分類(lèi)器以前沒(méi)有看到的文本上使用的結(jié)果,以及它們的準(zhǔn)確性佩厚。)

4.最后姆钉,我們?yōu)镸L模型創(chuàng)建一些元數(shù)據(jù),如作者抄瓦、描述和版本潮瓶。我們使用write()函數(shù)將模型保存到我們選擇的位置!在下面的圖片中,你會(huì)看到我選擇了桌面!


運(yùn)行钙姊。您可以在控制臺(tái)中看到迭代毯辅,在右邊欄中看到精度!?完成所有操作后,將保存核心ML模型!您可以查看模型并查看元數(shù)據(jù)!


表格式分類(lèi)

表格數(shù)據(jù)是關(guān)于創(chuàng)建ML最先進(jìn)和有趣的特性之一煞额,通過(guò)觀察表中的一系列特性思恐,創(chuàng)建ML可以檢測(cè)模式并創(chuàng)建分類(lèi)器來(lái)檢測(cè)您想要的目標(biāo)特性。

在這種情況下膊毁,讓我們來(lái)處理機(jī)器學(xué)習(xí)世界中最流行的數(shù)據(jù)集之一——房?jī)r(jià)!更有趣的是胀莹,數(shù)據(jù)集不是JSON格式,而是CSV格式!在這里下載數(shù)據(jù)集.

這個(gè)數(shù)據(jù)集是在UCI機(jī)器學(xué)習(xí)存儲(chǔ)庫(kù)中發(fā)現(xiàn)的波士頓房屋數(shù)據(jù)集的修改版本婚温。打開(kāi)文件嗜逻,您可以看到有一個(gè)巨大的表格,其中包含數(shù)字和4個(gè)縮寫(xiě)缭召。這是他們的意思:

? ?RM: ?每個(gè)住宅的平均房間數(shù)

? ?LSTAT: 人口中被認(rèn)為地位較低的百分比

? ?PTRATIO: 城鎮(zhèn)學(xué)生與學(xué)生的比率

? ?MEDV: 自住房屋的中位數(shù)?

您可以猜到栈顷,我們將使用3個(gè)特性(RM, LSTAT, PTRATIO)來(lái)計(jì)算最終的價(jià)格(MEDV)!


讓Xcode讀取表非常簡(jiǎn)單!下面的代碼應(yīng)該看起來(lái)非常類(lèi)似于文本分類(lèi)代碼!

//1

let houseData = try MLDataTable(contentsOf: URL(fileURLWithPath: "/Users/Path/To/HouseData.csv"))

let (trainingCSVData, testCSVData) = houseData.randomSplit(by: 0.8, seed: 0)

//2

let pricer = try MLRegressor(trainingData: houseData, targetColumn: "MEDV")

//3

let csvMetadata = MLModelMetadata(author: "Sai Kambampati", shortDescription: "A model used to determine the price of a house based on some features.", version: "1.0")

try pricer.write(to: URL(fileURLWithPath: "/Users/Path/To/Write/HousePricer.mlmodel"), metadata: csvMetadata)



如果您不能理解上面的代碼逆日,沒(méi)問(wèn)題!我將一步一步地完成它!

1. 第一步是在家庭數(shù)據(jù)。csv中引用我們的數(shù)據(jù)萄凤。這是通過(guò)簡(jiǎn)單的URL調(diào)用完成的(fileURLWithPath:)室抽。接下來(lái),我們定義應(yīng)該將數(shù)據(jù)的哪些部分分解為訓(xùn)練和測(cè)試靡努。我們像往常一樣把它分成80-20個(gè)坪圾,為了稍微改變一下,讓我們從頭開(kāi)始(將種子設(shè)置為0)惑朦。


2.接下來(lái)兽泄,我們使用全新的mlerror枚舉為我們的數(shù)據(jù)定義一種名為pricer的回歸值。這是關(guān)于創(chuàng)建ML的最酷的部分之一漾月。ML算法使用了大量的回歸元素:線性病梢、增強(qiáng)樹(shù)、決策樹(shù)和隨機(jī)森林梁肿。這些都是最常見(jiàn)的蜓陌。除非您是ML專(zhuān)家,否則很難確定哪一個(gè)最適合您的數(shù)據(jù)吩蔑。這就是Create ML的作用所在钮热。當(dāng)您選擇mlresissor時(shí),創(chuàng)建ML將您的數(shù)據(jù)遍歷所有這些變量烛芬,并為您選擇最好的一個(gè)隧期。我們選擇訓(xùn)練數(shù)據(jù)為室內(nèi)數(shù)據(jù),將目標(biāo)列設(shè)為MEDV赘娄,即中位價(jià)格厌秒。

這里有一些快速的術(shù)語(yǔ)。你可能想知道分類(lèi)器和回歸模型之間的區(qū)別擅憔。分類(lèi)器將數(shù)據(jù)的輸出分組到類(lèi)或標(biāo)簽中鸵闪。另一方面,回歸者利用訓(xùn)練數(shù)據(jù)預(yù)測(cè)輸出值暑诸。解釋變量是不需要標(biāo)簽蚌讼。此外,在機(jī)器學(xué)習(xí)中个榕,特性是數(shù)據(jù)集中的變量篡石。在我們的例子中,特征是房間的平均數(shù)量西采、人口的百分比和學(xué)生與學(xué)生的比例凰萨。目標(biāo)也是我們數(shù)據(jù)中的一列這是我們希望回歸預(yù)測(cè)的。這里是房?jī)r(jià)的中值。

3. 最后胖眷,我們?yōu)槲覀兊哪P投x一些元數(shù)據(jù)武通,并將其保存到我們想要的任何地方!

在撰寫(xiě)本文時(shí),Create ML不支持顯示多變量的準(zhǔn)確性珊搀。它只能顯示最大誤差和平方根誤差冶忱,這兩項(xiàng)對(duì)顯示模型的準(zhǔn)確性沒(méi)有多大幫助。但請(qǐng)相信我境析,當(dāng)我說(shuō)Xcode生成的模型相當(dāng)準(zhǔn)確時(shí)囚枪。

在playground跑完后,觀察右邊的窗格劳淆×凑樱看起來(lái)Create ML已經(jīng)決定了增強(qiáng)樹(shù)是我們的數(shù)據(jù)最好的遺憾!這簡(jiǎn)直太神奇了不是嗎?我已經(jīng)將我的核心ML模型保存到我的桌面。打開(kāi)您的核心ML模型并觀察元數(shù)據(jù)沛鸵。


您可以看到括勺,該模型是一個(gè)管道退化程序,大約是10kb谒臼。它包含3個(gè)特性(就像我們想要的那樣)朝刊,并輸出最終的價(jià)格!

結(jié)論

在本教程中耀里,您了解了如何使用蘋(píng)果最新的框架create ML創(chuàng)建您自己的機(jī)器學(xué)習(xí)模型!只需幾行代碼蜈缤,您就可以創(chuàng)建高級(jí)的、最先進(jìn)的機(jī)器學(xué)習(xí)算法來(lái)處理您的數(shù)據(jù)冯挎,并給出您想要的結(jié)果!

您了解了如何在CSV和JSON格式中訓(xùn)練圖像底哥、文本和表格數(shù)據(jù)。使用CreateMLUI可以非常簡(jiǎn)單地訓(xùn)練圖像房官,雖然沒(méi)有針對(duì)文本和表格數(shù)據(jù)的UI趾徽,但是可以在10行以?xún)?nèi)編寫(xiě)代碼

要了解更多關(guān)于創(chuàng)建ML的信息,可以觀看蘋(píng)果關(guān)于創(chuàng)建ML的視頻翰守。您還可以查看蘋(píng)果關(guān)于創(chuàng)建ML的文檔孵奶。

你可以在這里下載最終的playground。在這個(gè)項(xiàng)目中蜡峰,您將訪問(wèn)最終的核心ML模型了袁,以便查看您的模型是否匹配!繼續(xù)嘗試創(chuàng)建ML,并觀察您的結(jié)果湿颅,當(dāng)您導(dǎo)入它們到您的iOS應(yīng)用程序!在下面的評(píng)論中载绿,讓我知道如何使用CoreML來(lái)分享你的應(yīng)用程序的截圖!


原文作者:?Sai Kambampati


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市油航,隨后出現(xiàn)的幾起案子崭庸,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,657評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件怕享,死亡現(xiàn)場(chǎng)離奇詭異执赡,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)熬粗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)搀玖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人驻呐,你說(shuō)我怎么就攤上這事灌诅。” “怎么了含末?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,057評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵猜拾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我佣盒,道長(zhǎng)挎袜,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,509評(píng)論 1 293
  • 正文 為了忘掉前任肥惭,我火速辦了婚禮盯仪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蜜葱。我一直安慰自己全景,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布牵囤。 她就那樣靜靜地躺著爸黄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪揭鳞。 梳的紋絲不亂的頭發(fā)上炕贵,一...
    開(kāi)封第一講書(shū)人閱讀 51,443評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音野崇,去河邊找鬼称开。 笑死,一個(gè)胖子當(dāng)著我的面吹牛乓梨,可吹牛的內(nèi)容都是我干的鳖轰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼督禽,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼脆霎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起狈惫,我...
    開(kāi)封第一講書(shū)人閱讀 39,129評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤睛蛛,失蹤者是張志新(化名)和其女友劉穎鹦马,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體忆肾,經(jīng)...
    沈念sama閱讀 45,561評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡荸频,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了客冈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片旭从。...
    茶點(diǎn)故事閱讀 39,902評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖场仲,靈堂內(nèi)的尸體忽然破棺而出和悦,到底是詐尸還是另有隱情,我是刑警寧澤渠缕,帶...
    沈念sama閱讀 35,621評(píng)論 5 345
  • 正文 年R本政府宣布鸽素,位于F島的核電站,受9級(jí)特大地震影響亦鳞,放射性物質(zhì)發(fā)生泄漏馍忽。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評(píng)論 3 328
  • 文/蒙蒙 一燕差、第九天 我趴在偏房一處隱蔽的房頂上張望遭笋。 院中可真熱鬧,春花似錦徒探、人聲如沸瓦呼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,838評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吵血。三九已至谎替,卻和暖如春偷溺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钱贯。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,971評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工挫掏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人秩命。 一個(gè)月前我還...
    沈念sama閱讀 48,025評(píng)論 2 370
  • 正文 我出身青樓尉共,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親弃锐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子袄友,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • 1、通過(guò)CocoaPods安裝項(xiàng)目名稱(chēng)項(xiàng)目信息 AFNetworking網(wǎng)絡(luò)請(qǐng)求組件 FMDB本地?cái)?shù)據(jù)庫(kù)組件 SD...
    陽(yáng)明先生_X自主閱讀 15,980評(píng)論 3 119
  • 共享經(jīng)濟(jì)可以?xún)?yōu)化交易結(jié)構(gòu)霹菊,變買(mǎi)為租是共享經(jīng)濟(jì)的一種剧蚣,變買(mǎi)為租在生活中很常見(jiàn),你從廣州到北京需要買(mǎi)一輛飛機(jī)嗎?不需要...
    潮_6ab8閱讀 614評(píng)論 0 0
  • 常說(shuō)三分釣七分餌鸠按,不管是釣什么魚(yú)的釣餌都很重要礼搁,但是不同的季節(jié)選擇的釣餌是有差別的。市面上各種各樣的商品餌目尖,讓人眼...
    釣俠閱讀 375評(píng)論 0 0
  • 今天上班的主要內(nèi)容就是寫(xiě)一份繁瑣又曲折的報(bào)告馒吴。 于是,今天的打開(kāi)方式是這樣的:早晨到單位瑟曲,吃完早飯饮戳,買(mǎi)好咖啡,...
    舒念西西西閱讀 312評(píng)論 0 0
  • 我是一枚普通的裝修工洞拨,隨著這些年人體工程這個(gè)詞的出現(xiàn)莹捡,為裝修界帶來(lái)了一個(gè)相對(duì)來(lái)講比較規(guī)范的施工標(biāo)準(zhǔn)。 然而扣甲,任何事...
    瀚海侯閱讀 244評(píng)論 0 0