【发布时间】:2021-04-06 07:58:44
【问题描述】:
所以我目前遇到的问题是,每次我预测我加载的模型时,我的 Jupyter Notebook 的内核都会关闭。
所以我得到了这个带有这个模型摘要的 Keras 模型:
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 100) 200
_________________________________________________________________
re_lu_1 (ReLU) (None, 100) 0
_________________________________________________________________
dropout_1 (Dropout) (None, 100) 0
_________________________________________________________________
dense_2 (Dense) (None, 50) 5050
_________________________________________________________________
re_lu_2 (ReLU) (None, 50) 0
_________________________________________________________________
dropout_2 (Dropout) (None, 50) 0
_________________________________________________________________
dense_3 (Dense) (None, 1) 51
=================================================================
Total params: 5,301
Trainable params: 5,301
Non-trainable params: 0
我打算使用我上网的this method 来保存这个模型。我保存了整个模型。然后,我尝试将保存的模型加载到另一个笔记本上。完成尺寸/形状调整后,我开始注意到每次执行 model.predict() 时,我的内核都会关闭并且没有给出错误消息。所以我开始向后做,试图在原始笔记本上进行预测,模型是在哪里训练的。而且我没有发现错误。我的假设是:
- 模型没有问题。因为这样它可以预测一个数据。任何比这更大的东西,它都会粉碎。
- 问题来自保存和加载模型
这是我保存和加载模型的代码
模型起源笔记本
有没有人遇到过同样的问题?以下代码是我的代码:
#Model architecture
#Model ANN
model = Sequential()
model.add(Dense(100, input_shape=(1,)))
model.add(ReLU())
model.add(Dropout(.5))
model.add(Dense(50))
model.add(ReLU())
model.add(Dropout(.5))
model.add(Dense(1))
model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
model.fit(X_train, y_train, epochs=1000, batch_size=100, validation_data=(X_valid, y_valid))
# ATTEMPT 1 save the model to disk
filename = 'model_pake_pickle_bener.sav'
pickle.dump(model, open(filename, 'wb'))
不同的笔记本
这就是问题所在
#Load the saved model
filename = 'model_pake_pickle_bener.sav'
loaded_model = pickle.load(open(filename, 'rb'))
#reduce number of data used
bersih = bessp[:2]
#Introducing our dataset to tf (Voltage only)
X = bersih['Voltage_y'].values
y = bersih['SOC'].values
#Reshaping
X = X.reshape(X.shape[0], 1)
y = y.reshape(y.shape[0], 1)
#Adjustment
X = np.asarray(X).astype('float32')
y = loaded_model.predict(X)
我尝试过使用 h5 文件,结果和其他文件一样。
【问题讨论】:
-
是否有可用的崩溃日志?
-
我的猜测是使用
pickle保存模型时缺少一些东西。当 TF 将模型保存到磁盘时,它还包括图形定义(请参阅docs 了解更多信息) -
不,没有给出崩溃日志。但是,当我在 Google Colab 上使用我的笔记本时,它给出了错误消息“ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type float)”。但这是在重塑部分之前。
标签: tensorflow keras jupyter-notebook