keras模型无法推广

keras模型无法推广,keras,deep-learning,Keras,Deep Learning,你能帮我找出我的keras模型有什么问题吗,因为它从第二个纪元开始就过度拟合了。 代码如下: 随机导入 作为pd进口熊猫 导入tensorflow作为tf 进口numpy 从sklearn.preprocessing导入标签编码器 从tensorflow.keras导入后端为K 导入全局操作系统 从sklearn.preprocessing导入StandardScaler 从sklearn.preprocessing导入规范化器 类CustomSaver(tf.keras.callbacks.C

你能帮我找出我的keras模型有什么问题吗,因为它从第二个纪元开始就过度拟合了。 代码如下:

随机导入
作为pd进口熊猫
导入tensorflow作为tf
进口numpy
从sklearn.preprocessing导入标签编码器
从tensorflow.keras导入后端为K
导入全局操作系统
从sklearn.preprocessing导入StandardScaler
从sklearn.preprocessing导入规范化器
类CustomSaver(tf.keras.callbacks.Callback):
_epoch_end上的def(self、epoch、logs={}):
如果((历元%50)=0):
model_json=self.model.to_json()
将open(“model_{}.json”.format(epoch),“w”)作为json_文件:
json_file.write(model_json)
self.model.save_weights(“model_weights_{}.h5.format(epoch))
self.model.save(“model{}.h5.format(epoch))
打印(“已将模型保存到磁盘”)
model=tf.keras.models.Sequential()
model.add(tf.keras.layers.density(units=806,activation='relu',input_shape=(100,),activity_regulazer=tf.keras.regulazers.l1(0.01))#50
添加(tf.keras.layers.BatchNormalization())
模型添加(tf.keras.layers.Dropout(0.3))
model.add(tf.keras.layers.density(units=806,activation='relu',activity_regulazer=tf.keras.regulazers.l1(0.01))#50
添加(tf.keras.layers.BatchNormalization())
模型添加(tf.keras.layers.Dropout(0.3))
model.add(tf.keras.layers.density(units=806,activation='relu',activity_regulazer=tf.keras.regulazers.l1(0.01))#50
添加(tf.keras.layers.BatchNormalization())
模型添加(tf.keras.layers.Dropout(0.3))
model.add(tf.keras.layers.density(units=14879,activation='softmax'))
optm=tf.keras.optimizers.Adam(学习率=0.0001,β1=0.9,β2=0.999,amsgrad=False)
compile(optimizer=optm,loss='classifical_crossentropy',metrics=['accurity',tf.keras.metrics.Precision(),tf.keras.metrics.Recall())
saver=CustomSaver()
编码器=LabelEncoder()
ds=pd.read\U csv(“所有标签.csv”)
y=ds.iloc[:,0]。值
编码器安装(y)
dataset\u val=pd.read\u csv('validation\u dataset.csv'))
X_val=dataset_val.iloc[:,1:101]。值
y_val=dataset_val.iloc[:,0]。值
顺序=列表(范围(0,len(y_val)))
随机。洗牌(顺序)
X_val=X_val[订单:]
y_val=y_val[订单]
encoded_Y=编码器。转换(Y_val)
y_val=tf.keras.utils.to_category(编码y,14879)
X_val=X_val.astype('float32')
chunksize=401999
co=1
对于pd.read\u csv中的数据集(“training\u dataset.csv”,chunksize=chunksize):

如果(co您的问题来自您的数据:

  • 您正试图从形状输入输出14879个值(批量大小,100),您的网络不可能从您的数据中学习到一些东西
  • 正如@Nopileos所说,10000的批量太大了,我不认为你有数亿的输入,所以考虑使用更合理的批量大小

如果您想让我们帮助您提供一些直观信息,请添加您的输入/标签形状及其相应内容!

如果您的内存不足,请减小块大小。将其减小到10,然后看看是否有效。较大的块大小意味着您的计算机一次必须在RAM中保存更多信息。

这似乎是过度的批量大小。您的数据是什么?您有多少个样本?您试图解决什么问题?请提供更多信息,仅从这些代码中没有人能说出问题所在。@Nopileos抱歉,我花了一段时间才上传了培训csv文件(30 GB)。我添加了更多详细信息。抱歉,我花了一些时间上载我的培训csv文件(30 GB)。我添加了有关此问题的更多详细信息。谢谢@tdogo的回答。我已使用块解决了内存不足问题。我现在的问题是我的模型过拟合。请尝试使用正则化参数:。regularizers.l1(0.01)将.01改为.1,然后再改为1,看看这是否能得到更好的结果。