如何减小“.h5”中的模型文件大小

How to reduce model file size in ".h5"

我使用的是tensorflow和keras 2.8.0版本。

我有以下网络:

#defining model
  model=Sequential()
  #adding convolution layer
  model.add(Conv2D(256,(3,3),activation='relu',input_shape=(256,256,3)))
  #adding pooling layer
  model.add(MaxPool2D(2,2))
  #adding fully connected layer
  model.add(Flatten())
  model.add(Dense(100,activation='relu'))
  #adding output layer
  model.add(Dense(len(classes),activation='softmax'))

  #compiling the model
  model.compile(loss='sparse_categorical_crossentropy',optimizer='adam',metrics=['accuracy'])

  #fitting the model
  model.fit(x_tr,y_tr,epochs=epochs, ) 
  # Alla 12-esima epoca, va a converge a 1
  # batch size è 125 credo, non so il motivo

  #evaluting the model
  loss_value, accuracy = model.evaluate(x_te, y_te)
  #loss_value, accuracy, top_k_accuracy = model.evaluate(x_te, y_te, batch_size=batch_size)
  print("loss_value: " + str(loss_value))
  print("acuracy: " + str(accuracy))

  #predict first 4 images in the test set
  ypred = model.predict(x_te)

重点是,现在我正在尝试以“.h5”格式保存模型,但如果我训练它 100 次或 1 次,我将得到一个 4.61Gb 文件模型。

为什么这个文件这么大? 我怎样才能减小这个模型的大小?

一般原因:您的 h5 文件的大小仅取决于您的模型具有的参数数量。

构建模型后添加行 model.summary() 并查看模型的一般参数数量。

减小模型大小的步骤:你的转换层中有很多过滤器。由于我不知道你想用你的模型实现什么,我仍然建议你将过滤器的数量分开到不同的 conv 层,并在它们之间添加 Pooling 层。这将缩小图像,尤其是减少 Flatten 层的参数数量。 有关 Pooling 层的更多信息,请参见 here