【发布时间】:2017-05-24 21:47:07
【问题描述】:
我想建立一个神经网络模型,假设 100 行的数据被分成 5 个堆栈,每个堆栈 20 行,现在我不想一次遍历所有数据,而是想基于前 20 行构建一个神经网络数据(即第一个堆栈),然后保存模型(权重等),然后将下一个堆栈(接下来的 20 行,即第 21-40 行)传递到更新的模型(即从以前的模型更新的权重),等等。有人能告诉我这种类型的神经网络叫什么吗? 我昨天刚刚尝试了我的第一个神经网络,我在其中批量迭代所有数据(我相信这发生在一个时期而不是多个时期)。
以下是我使用 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))
【问题讨论】:
标签: python tensorflow neural-network deep-learning keras