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

Python神经网络代码(Keras)的问题,python,tensorflow,neural-network,deep-learning,keras,Python,Tensorflow,Neural Network,Deep Learning,Keras,我想建立一个神经网络模型,假设100行的数据被分成5个堆栈,每个堆栈20行,而不是一次迭代,我想基于前20行数据(即第一个堆栈)建立一个神经网络,然后保存模型(权重等),然后传递下一个堆栈(下20行即第21-40行)而不是更新模型(即从以前的模型更新权重),等等。有人能告诉我这种神经网络叫什么吗? 我昨天刚刚尝试了我的第一个神经网络,在那里我批量迭代了所有数据(我相信这是在一个纪元而不是多个纪元中发生的) 下面是我使用Keras(Tensorflow后端)在Python中创建的神经网络。有人能建

我想建立一个神经网络模型,假设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))

听起来您希望在大小为20的小批量中对数据进行训练,并在每个小批量后保存模型。您不需要为此更改输入数据的形状-形状矩阵(nb_数据点、nb_特征)可以工作。调用
model.fit()
时,请确保指定
batch\u size=20


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

听起来您希望在大小为20的小批量数据中进行训练,并在每个小批量之后保存模型。您不需要为此更改输入数据的形状-形状矩阵(nb_数据点、nb_特征)可以工作。调用
model.fit()
时,请确保指定
batch\u size=20


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

是的,您正好得到了我想要的,当然我会尝试,尽管您可以指定为什么我要选择batch_size=10吗?好的,在我的例子中还有一件事,我希望它完成一个小批量的所有历元,更新权重,然后使用更新的权重继续第二个小批量,那么上面的调整会解决它吗?根据定义,历元是对所有数据的一次完整运行。但是权重只会在每个小批量之后更新,所以上面的方法应该可以满足您的需要。是的,您正好得到了我想要的,我一定会尝试,尽管您可以指定为什么我要使用batch_size=10吗?好的,在我的情况下,还有一件事我希望它完成一个小批量的所有历元,更新权重,然后使用更新后的权重进行第二次小批量处理,那么上述调整会解决吗?根据定义,历元是对所有数据的一次完整运行。但是权重只在每个小批量之后更新,所以上面的方法应该满足您的需要。