2017-01-10 1 views
0

신경망 모델을 만들고 싶습니다. 100 행의 데이터가 20 행 5 스택으로 나누어 져 있습니다. 이제는 한번에 반복하여 반복하지 않고 처음 20 행의 데이터 (첫 번째 스택)를 기반으로 한 신경망을 만든 다음 모델 (무게 등)을 저장하고 다음 스택 (다음 20 행 즉 행 번호 21-40)을 업데이트 된 모델 (예 : 업데이트 된 가중치 이전 모델에서) 등등. 누군가가 그러한 유형의 신경망이 무엇이라고 불릴 수 있습니까? 어제 나는 모든 데이터를 일괄 적으로 반복 한 어중간한 첫 번째 신경망을 시험해 보았습니다.Python 신경망 코드 (Keras) 문제

다음은 Keras (Tensorflow 백엔드)를 사용하여 Python으로 만든 신경망입니다. 누군가 내 요구 사항에 따라 다음 모델을 편집하도록 제안 할 수 있습니까?

# 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 minibatches에서 데이터에 훈련하고, 각 minibatch 후 모델을 저장하려는 것처럼 소리. 이를 위해 입력 데이터의 모양을 변경할 필요가 없습니다. 모양 매트릭스 (nb_datapoints, nb_features)가 작동합니다. model.fit()에 전화 할 때는 batch_size=20을 지정해야합니다.

각 minibatch 후에 모델을 저장하려면 Keras callbacks을 살펴보십시오. 나만의 맞춤 콜백을 작성해야하지만 기존의 ModelCheckpoint 콜백 이후 모델링 할 수 있습니다. 즉, 각 에포크 이후에 모델을 저장하므로 필요에 맞게 사용자 정의하는 것이 상대적으로 간단해야합니다.

+0

그래, 내가 원하는 것을 정확히 가지고있다. 내가 그것을 시도 할 것이지만, 왜 내가 batch_size = 10을 취해야 하는지를 구체적으로 설명해 줄 수 있겠는가? –

+0

미안하지만, 그건 오타였습니다. 물론'20'을 의미했습니다! –

+0

좋아, 내 경우에 한 가지 더 추가 할 일은 하나의 minibatch에 대해 모든 시대를 완료하고, 가중치를 업데이트 한 다음 업데이트 된 가중치로 두 번째 minibatch를 진행하기를 원하므로 위의 사항을 고려해야할까요? –