我還是失去了火花和深度學習模型。
如果我有一個(2 d)時間序列,例如我想用一個LSTM模型。然後我第一次將它轉換成一個三維數組,然後將其傳遞給模型。這是通常與numpy在內存中完成。但當我管理我的大文件與火花?迄今為止我所見過的所有的解決方案通過使用火花然後在numpy轉換3 d數據。在內存中,讓一切....還是我想錯了嗎?
一個共同的火花LSTM解決方案是這樣的:
#創建假數據導入隨機從keras keras導入模型導入層數據=[]節點範圍(0100):天的範圍(0100):data.append ([str(節點),天,隨機的。randrange(1) 15日,25日,隨機的。randrange(100 1),隨機的。randrange (1000、1045、1)]) df =火花。createDataFrame(數據,[“節點”,“天”,“臨時”,“嗡嗡聲”,'新聞'])#轉換數據df_trans = df.groupBy(天).pivot(節點).sum () df_trans = df_trans。orderBy(['天'],提升= True) #讓tran /測試數據trainDF = df_trans [df_trans。天< 70]testDF = df_trans [df_trans。天> 70)# # # # # # # # # # # # # # # # # #我們失去了火花# # # # # # # # # # # # # # # # # # # # # # # # # # # # # #創建培訓/測試數組trainArray = np.array (trainDF.select (trainDF.columns) .collect ()) testArray = np.array (testDF.select (trainDF.columns) .collect()) #把目標列xtrain = trainArray (:, 0: 1) xtest = testArray(:, 0: 1) #把目標列ytrain = trainArray(:, 1:]次= testArray(:, 1: #重塑2 d到3 d xtrain = xtrain.reshape ((xtrain。形狀[0]1 xtrain.shape [1])) xtest = xtest.reshape ((xtest。形狀[0]1 xtest.shape[1])) #構建模型模型= models.Sequential () model.add(層。LSTM (1 input_shape = (1400))) model.add (layers.Dense (1) model.compile (=“mean_squared_error”損失,優化器=“亞當”)#火車模型=損失模型。適合(xtrain ytrain batch_size = 10,時代= 100)
我的問題是:如果我的火花數據使用數百萬行和成千上萬的列,然後當#創建培訓/測試數組程序試圖轉換數據,它會導致內存溢出。我說的對嗎?
我的問題是:火花可以用於火車LSTM模型對大數據,還是不可能?
生成器函數可以解決這個嗎?喜歡Keras生成器函數嗎?
數據不但是列數。還有數組類型的火花。也許它會做得更好。