2017-01-10 6 views
0

100行のデータが20行5列に分割されたニューラルネットモデルを構築したいと思います。最初の20行のデータ(すなわち第1のスタック)に基づいたニューラルネットを作成し、モデルを保存し(ウェイトなど)、更新されたモデルに次のスタック(次の20行、すなわち行番号21-40)以前のモデルから)などがあります。誰かがこのようなタイプのニューラルネットワークと呼ばれるものを教えてもらえますか? 私はバッチですべてのデータを反復した最初のニューラルネットを昨日試しました(私は複数回ではなく1回に発生すると考えています)。Pythonニューラルネットワークコード(Keras)の問題

私はPythonでKeras(Tensorflowバックエンド)を使用して作成したNeural Netは、誰かが私の要件として次のモデルを作るための編集を提案できますか?

# Create first network with Keras 
from keras.models import Sequential 
from keras.layers import Dense 
import numpy 
import pandas as pd 
# from sklearn.cross_validation import train_test_split 
from sklearn.model_selection import train_test_split 

# fix random seed for reproducibility 
seed = 7 
numpy.random.seed(seed) 

# load dataset 
raw_data = pd.read_excel('Data.xlsx',sep=',') 
df = raw_data.iloc[:,0:2] 

df = pd.get_dummies(df) 
rows,cols = df.shape 
output_dim = 7 # No. of Output Dimensions/Categories 

#Splitting Data in Training & Testing 
X_train,X_test,y_train,y_test = train_test_split(df.iloc[:,0:cols-output_dim],df.iloc[:,cols-output_dim:cols],test_size=0.2,random_state=seed) 

X = X_train.as_matrix() 
X_test = X_test.as_matrix() 
Y = y_train.as_matrix() 
Y_test = y_test.as_matrix() 


# create model 
model = Sequential() 
model.add(Dense(X.shape[1], input_dim=X.shape[1], activation='relu')) #Input Layer 
model.add(Dense(X.shape[1], activation='relu')) #Hidden Layer 
model.add(Dense(X.shape[1], activation='relu')) #Hidden Layer 
model.add(Dense(X.shape[1], activation='relu')) #Hidden Layer 
model.add(Dense(output_dim, activation='softmax')) #Output Layer 

# Compile model 
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) 

# Fit the model 
model.fit(X,Y,nb_epoch=10, validation_data=(X_test,Y_test), batch_size=83,verbose=1) 

# evaluate the model 
loss, accuracy = model.evaluate(X1, Y1) 
print("\nValidation Data [Loss: %.2f, Accuracy: %.2f%%]" % (loss, accuracy*100)) 

答えて

3

サイズ20のミニバッチでデータを訓練し、各ミニセットの後にモデルを保存するように思えます。このために入力データの形状を変更する必要はありません。形状のマトリックス(nb_datapoints、nb_features)が機能します。 model.fit()に電話するときは、batch_size=20を必ず指定してください。

各ミニバッチ後にモデルを保存するには、Keras callbacksを参照してください。独自のカスタムコールバックを記述する必要がありますが、既存のModelCheckpointコールバックの後にモデリングすることができます。各エポック後にモデルを保存するので、ニーズに合わせてカスタマイズするのは比較的簡単です。

+0

ええ、あなたが正確に私が欲しかったことを得ました、確かに私はそれを試みますが、なぜあなたはbatch_size = 10を取るべきですか? –

+0

申し訳ありませんが、それはタイプミスでした - 私はもちろん、20を意味しました! –

+0

さて、私の場合、もう1つの事は、1つのミニバッチですべてのエポックを完了させ、ウェイトを更新し、更新されたウェイトを使用して2番目のミニバッチを進めたいと思います。 –