㈠ Python keras構建CNN
data.py:
#coding:utf-8
"""
Author:wepon
Source:https://github.com/wepe
"""
importos
fromPILimportImage
importnumpyasnp
#讀取文件夾mnist下的42000張圖片,圖片為灰度圖,所以為1通道,圖像大小28*28
#如果是將彩色圖作為輸入,則將1替換為3,並且data[i,:,:,:]=arr改為data[i,:,:,:]=[arr[:,:,0],arr[:,:,1],arr[:,:,2]]
defload_data():
data=np.empty((42000,1,28,28),dtype="float32")
label=np.empty((42000,),dtype="uint8")
imgs=os.listdir("./mnist")
num=len(imgs)
foriinrange(num):
img=Image.open("./mnist/"+imgs[i])
arr=np.asarray(img,dtype="float32")
data[i,:,:,:]=arr
label[i]=int(imgs[i].split('.')[0])
returndata,label
由於Keras系統升級,cnn.py代碼調整如下:
#coding:utf-8
'''
GPUruncommand:
THEANO_FLAGS=mode=FAST_RUN,device=gpu,floatX=float32pythoncnn.py
CPUruncommand:
pythoncnn.py
'''
#導入各種用到的模塊組件
from__future__importabsolute_import
from__future__importprint_function
fromkeras.preprocessing.imageimportImageDataGenerator
fromkeras.modelsimportSequential
fromkeras.layers.coreimportDense,Dropout,Activation,Flatten
fromkeras.layers.advanced_activationsimportPReLU
fromkeras.layers.,MaxPooling2D
fromkeras.optimizersimportSGD,Adadelta,Adagrad
fromkeras.utilsimportnp_utils,generic_utils
fromsix.movesimportrange
fromdataimportload_data
importrandom
#載入數據
data,label=load_data()
#打亂數據
index=[iforiinrange(len(data))]
random.shuffle(index)
data=data[index]
label=label[index]
print(data.shape[0],'samples')
#label為0~9共10個類別,keras要求格式為binaryclassmatrices,轉化一下,直接調用keras提供的這個函數
label=np_utils.to_categorical(label,10)
###############
#開始建立CNN模型
###############
#生成一個model
model=Sequential()
#第一個卷積層,4個卷積核,每個卷積核大小5*5。1表示輸入的圖片的通道,灰度圖為1通道。
#border_mode可以是valid或者full,具體看這里說明:http://deeplearning.net/software/theano/library/tensor/nnet/conv.html#theano.tensor.nnet.conv.conv2d
#激活函數用tanh
#你還可以在model.add(Activation('tanh'))後加上dropout的技巧:model.add(Dropout(0.5))
model.add(Convolution2D(4,5,5,border_mode='valid',input_shape=(1,28,28)))
model.add(Activation('tanh'))
#第二個卷積層,8個卷積核,每個卷積核大小3*3。4表示輸入的特徵圖個數,等於上一層的卷積核個數
#激活函數用tanh
#採用maxpooling,poolsize為(2,2)
model.add(Convolution2D(8,3,3,border_mode='valid'))
model.add(Activation('tanh'))
model.add(MaxPooling2D(pool_size=(2,2)))
#第三個卷積層,16個卷積核,每個卷積核大小3*3
#激活函數用tanh
#採用maxpooling,poolsize為(2,2)
model.add(Convolution2D(16,3,3,border_mode='valid'))
model.add(Activation('tanh'))
model.add(MaxPooling2D(pool_size=(2,2)))
#全連接層,先將前一層輸出的二維特徵圖flatten為一維的。
#Dense就是隱藏層。16就是上一層輸出的特徵圖個數。4是根據每個卷積層計算出來的:(28-5+1)得到24,(24-3+1)/2得到11,(11-3+1)/2得到4
#全連接有128個神經元節點,初始化方式為normal
model.add(Flatten())
model.add(Dense(128,init='normal'))
model.add(Activation('tanh'))
#Softmax分類,輸出是10類別
model.add(Dense(10,init='normal'))
model.add(Activation('softmax'))
#############
#開始訓練模型
##############
#使用SGD+momentum
#model.compile里的參數loss就是損失函數(目標函數)
sgd=SGD(l2=0.0,lr=0.05,decay=1e-6,momentum=0.9,nesterov=True)
model.compile(loss='categorical_crossentropy',optimizer=sgd,class_mode="categorical")
#調用fit方法,就是一個訓練過程.訓練的epoch數設為10,batch_size為100.
#數據經過隨機打亂shuffle=True。verbose=1,訓練過程中輸出的信息,0、1、2三種方式都可以,無關緊要。show_accuracy=True,訓練時每一個epoch都輸出accuracy。
#validation_split=0.2,將20%的數據作為驗證集。
model.fit(data,label,batch_size=100,nb_epoch=10,shuffle=True,verbose=1,show_accuracy=True,validation_split=0.2)
"""
#使用dataaugmentation的方法
#一些參數和調用的方法,請看文檔
datagen=ImageDataGenerator(
featurewise_center=True,#setinputmeanto0overthedataset
samplewise_center=False,#seteachsamplemeanto0
featurewise_std_normalization=True,#divideinputsbystdofthedataset
samplewise_std_normalization=False,#divideeachinputbyitsstd
zca_whitening=False,#applyZCAwhitening
rotation_range=20,#(degrees,0to180)
width_shift_range=0.2,#(fractionoftotalwidth)
height_shift_range=0.2,#randomlyshiftimagesvertically(fractionoftotalheight)
horizontal_flip=True,#randomlyflipimages
vertical_flip=False)#randomlyflipimages
#
#(std,mean,)
datagen.fit(data)
foreinrange(nb_epoch):
print('-'*40)
print('Epoch',e)
print('-'*40)
print("Training...")
#
progbar=generic_utils.Progbar(data.shape[0])
forX_batch,Y_batchindatagen.flow(data,label):
loss,accuracy=model.train(X_batch,Y_batch,accuracy=True)
progbar.add(X_batch.shape[0],values=[("trainloss",loss),("accuracy:",accuracy)])
"""
㈡ Keras CNN 對不定長的文本輸入該怎麼處理
問題已解決,每次產生一個相同長度句子的batch,假設是32大小,只要每個batch里句子是同長度的就可以了,所以我用到了fit_generator,自己手動模擬了一個epoch的過程,遍歷了一次訓練樣本,每個batch的長度是不一致的,隨機的,唯一可能不能實現的是同一個batch有不同長度的句子,對於大數據量來說,事實證明,我在lstm模型用我的方法訓練和通過padding加masking的方法效果是一致的,唯一的缺點就是,當句子長度范圍太大時,相同長度樣本少時會比較困難,只要數據量大,樣本足夠,這種方法可以實現變長序列的處理,而不需要任何的masking
㈢ cnn是上市公司嗎
首先我告訴你!上市公司,股票和公司的本質!你的問題將在下半段被解答!
首先來說股票的漲跌對於公司的影響或者說公司的經營對於股票的漲跌!
股票的漲跌影響因素有!
1.公司持續贏利,導致投資者對於公司信心倍增到達購買該公司股票的投資者增多,股票上漲!
2.股票與公司的總資產有密切關系,因為股票等於公司的微量元素!也可以看做,公司是有股票所組成的!持有這種元素多的人,就是控制公司的人!
3.股票的高估值,就是泡沫!這是抄出來的!公司的盈利無法滿足股票先有價值,但是股價還是在上升!
好那麼我們回過來再看!也就是說,自上市公司上市後,其股市的漲跌收入按道理來說並不歸納在上市公司的收入里了!但是由於上市公司上市,不可能把全部的股票都發行出去,所以股票的漲跌對於上市公司的收入本質還是有關系的,因為上市公司有留存股本,和非流通股!
好 現在 來 討論 你 的 問題!
一.上市公司分紅派息錢是從哪來的?
當然,錢是從這年度的盈利中扣除的!那麼我們再來看,股票和公司的盈利能力以及總資產有關系,那麼分後過,公司內部總資產當然減少,相對的,公司就要對股價做出相應的調整,這就是除權!好,那麼我們要問了,既然這樣,那分紅和不分紅就不是沒區別了嗎?錯了!有區別,區別就在於公司把部分盈利給了股東,公司的意願並不是你們股東拿了我的分紅就把我的股拋了,我是要讓你們長期持有,長期享受我們的分紅,所以調整股價,是第一,防止資金溢價!雖然我們現在不用考慮把股票換成現錢,但是作為公司,要考慮一點,如果今天我分紅了,比如總資產是10W 那麼股價也等於10W,而分紅過總資產就等於5W了,如果不做響應調整,那麼股價還是10W,萬一明天我倒閉了,那中間的5W溢價我就沒辦法支付了,這是法律上的原因,因為每個股東,都享有公司破產後的其資產的分得!講到這里應該也算充分回答你的問題了吧!
那麼來總結下你的問題,
上市公司進入股市的錢,其實這句話就有錯誤的!因為股市和上市公司是個聯合體,並不能獨立的來說"進入"!這些分紅的錢,當然是公司在本年度里,的所有盈利的部分資金分給持有本公司股權的股東拉!
㈣ 如何從零使用 Keras + TensorFlow 開發一個復雜深度學習模型
Keras 是提供一些高可用的 Python API ,能幫助你快速的構建和訓練自己的深度學習模型,它的後端是 TensorFlow 或者 Theano 。本文假設你已經熟悉了 TensorFlow 和卷積神經網路,如果,你還沒有熟悉,那麼可以先看看這個10分鍾入門 TensorFlow 教程和卷積神經網路教程,然後再回來閱讀這個文章。
在這個教程中,我們將學習以下幾個方面:
為什麼選擇 Keras?為什麼 Keras 被認為是深度學習的未來?
在Ubuntu上面一步一步安裝Keras。
Keras TensorFlow教程:Keras基礎知識。
了解 Keras 序列模型
4.1 實際例子講解線性回歸問題使用 Keras 保存和回復預訓練的模型
Keras API
6.1 使用Keras API開發VGG卷積神經網路
6.2 使用Keras API構建並運行SqueezeNet卷積神經網路。
㈤ 我要做一個有關cnn的PPT,哪位大俠可以提供一些關於cnn的市場佔有、股市價格、資料越多越好
去wiki網路上查唄 很簡單
㈥ 網上找到一個用於EXCEL的VBA代碼,能用但是一直不理解,能幫我翻譯下嗎,謝謝
Sub DoSql()
這個過程名叫DoSql,運行不需要任何參數
Dim cnn As Object
定義cnn 它是是一個對象
Dim rst As Object
Dim Mypath As String, Str_cnn As String, Sqlstr As String
定義了一堆字元串
Dim i As Long
定義i是長整數
Set cnn = CreateObject("adodb.Connection")
簡而言之創建了ADOdb連接,你可以理解為啟用了一個和不同類型資料庫交互的中間組件
ADOdb,就像一根吸管,各種資料庫就像是奇形怪狀的杯子,正常的杯子從上面的開口取水,如果是瓶頸擰成麻花的杯子可能直接就倒不出來,要特殊的倒法。取數據就像取水,ADOdb做的事情是,只要把吸管放好,就可以取水,而不必掌握不同杯子特殊的倒水方法。
Mypath = ThisWorkbook.FullName
這里是給字元串Mypath賦值,讓他等於vba代碼所在文件的完整路徑,比如這段代碼放在了C盤根目錄下的123.xlsm里,運行之後Mypath="C:123.xlsm"
If Application.Version < 12 Then
Str_cnn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & Mypath
Str_cnn = provider
Else
Str_cnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source = " & Mypath
End If
這里是在判斷excel版本,不同的excel版本使用ADO的時候引擎版本不一樣,所以分開設置。
如果低於office12(其實就是2007)引擎使用OLEDB.4.0,數據源就是Mypath
給字元串Str_cnn賦值,其實就是指明了Provider和DataSource參數
Provider其實就是ADO使用的引擎
DataSource就是數據源
如果高於office12(高於office2007)
引擎使用OLEDB.12.0,數據源還是Mypath
Str_cnn = provider我也沒看懂為什麼這么寫。
是不是sub 前面有const provider
cnn.Open Str_cnn
連接資料庫
Sqlstr = "SELECT * FROM [ListInAdvance$]" '//請在此處寫入你的SQL代碼
Set rst = cnn.Execute(Sqlstr)
執行了你的sql語句
設置rst為查詢到的結果對象
Cells.ClearContents
清除sheet里所有內容,保留格式
For i = 0 To rst.Fields.Count - 1
Cells(1, 1) = rst.Fields(i).Name
Next
遍歷結果集,在A1單元格填上域(Field)名,但是其實只保留最後一個。(結果集)
Range("a2").CopyFromRecordset rst '
在以A2為左上角定點的區域里放上查詢得出的結果集。
cnn.Close
關閉ADOdb連接
Set cnn = Nothing
釋放cnn對象內存
End Sub
㈦ 怎樣在win10下安裝keras faster-rcnn
2、插上啟動U盤,保存退出後重啟電腦,會出現啟動菜單。如圖:
3、選擇01進入pe。如圖:
4、雙擊一鍵裝機工具。如圖:
5、必須保證機子里或者U盤內有win8.1的ghost系統備份。如圖:
6、選擇還原分區,如圖:
7、按照提示操作,如圖:
8、完成後重啟電腦,如圖:
9、系統安裝完成,重啟後進入win8.1系統
㈧ python keras CNN訓練文字的一位特徵向量怎麼構造卷積層
keras/imdb_cnn.py at master · fchollet/keras · GitHub
'''This example demonstrates the use of Convolution1D for text classification.
這個例子應該能幫到你
不過分類是 binary 的
要dense 層自己改成 softmax
我自己畢業論文也寫了一個 koalaGreener/Character-level-Convolutional-Network-for-Text-Classification-Applied-to-Chinese-Corpus
是把CNN用在文本分類的 不過dataset我是自己構建了新的中文字元和拼音字元,然後做了比較. 文章鏈接是[1611.04358] Character-level Convolutional Network for Text Classification Applied to Chinese Corpus 僅供參考啦 那時候不會做搜到這個鏈接也挺茫然的 後來者可以稍微參考一下
㈨ 如何使用 permute layer 將CNN 連接上 LSTM
不是很清楚你要如何處理你的數據。
1. 如果是想用卷積層前處理很多張圖片,然而再用LSTM預測這種順序的圖片,那麼你的tensor會多一個time_step維度。
但是time_step的維度是為LSTM准備的。進入卷積層之前,你應該會需要將輸入reshape。
輸入:(samples, time_step, channel, length, width),
channel, length, width不變。將samples, time_step reshape到一個維度上。
keras.layers.core.Reshape((-1, channel, length, width))
變成:(samples*time_step, channel, length, width)
這時再送入卷基層。
卷基層處理完後,你應該還會需要model.add(Flatten()):#(若要保留某維為後用,則用reshape)
變成(samples*time_step, nb_features_from_last_layer_in_cnn )
這時再reshape回來,keras.layers.core.Reshape((samples, time_step, channel, length, width))
然後送入LSTM層處理。
如果還想接feedforward layers,你還需要reshape。
這里的問題是time_step是只在LSTM層需要,其他層time_step可以被看做samples
2. 如果你是想用卷積層中已有的維(比如length、width、channels、filters)作為time_step,那麼你需要Permute((, , , ))來調節tensor對應的維。比如將長度作為time step用遞歸層來抓取特點,單靠permute可以。但是你描述的貌似是多個圖片序列,那需要第一種reshape來做。
㈩ keras 怎樣做到cnn與rnn連接
At last he got home with the watermelon.