Python神经网络代码问题(Keras)

时间:2017-01-10 11:54:26

标签: python tensorflow neural-network deep-learning keras

我想构建一个神经网络模型,其中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))

1 个答案:

答案 0 :(得分:3)

听起来您想要在20号小型机中训练您的数据,并在每个小批量之后保存模型。您无需为此更改输入数据的形状 - 形状矩阵(nb_datapoints,nb_features)有效。致电batch_size=20时,请务必指定model.fit()

为了在每个小批量之后保存您的模型,请查看Keras callbacks。您需要编写自己的自定义回调,但您可以在现有的ModelCheckpoint回调之后对其进行建模 - 在每个纪元后保存模型,因此根据您的需要自定义它应该相对简单。