- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我根据此处讨论的内容为 mnist 数据集设置了一个去噪自动编码器: https://blog.keras.io/building-autoencoders-in-keras.html
我正在尝试查看输入图像的重建如何随时间变化;我注意到有时 DAE 尖峰的损失(用于训练和验证),例如从损失 ~0.12 到 ~3.0。为了避免在训练过程中使用这些“失误”,我尝试使用 Keras 的回调,保存最佳权重(明智的 val_loss)并在每个训练“段”(在我的例子中为 10 个时期)后加载它们。
但是,我收到一条错误消息:
File "noise_e_mini.py", line 71, in <module>
callbacks=([checkpointer]))
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1650, in fit
validation_steps=validation_steps)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/training.py", line 1145, in _fit_loop
callbacks.set_model(callback_model)
File "/usr/local/lib/python2.7/dist-packages/keras/callbacks.py", line 48, in set_model
callback.set_model(model)
AttributeError: 'tuple' object has no attribute 'set_model'
我的代码是:
from keras.layers import Input, Dense
from keras.models import Model
from keras import regularizers
from keras.callbacks import ModelCheckpoint
input_img = Input(shape=(784,))
filepath_for_w='denoise_by_AE_weights_1.h5'
def autoencoder_block(input,l1_score_encode,l1_score_decode):
# encoder:
encoded = Dense(256, activation='relu',activity_regularizer=regularizers.l1(l1_score_encode))(input_img)
encoded = Dense(128, activation='relu',activity_regularizer=regularizers.l1(l1_score_encode))(encoded)
encoded = Dense(64, activation='relu',activity_regularizer=regularizers.l1(l1_score_encode))(encoded)
encoded = Dense(32, activation='relu',activity_regularizer=regularizers.l1(l1_score_encode))(encoded)
encoder = Model (input=input_img, output=encoded)
# decoder:
connection_layer= Input(shape=(32,))
decoded = Dense(64, activation='relu',activity_regularizer=regularizers.l1(l1_score_decode))(connection_layer)
decoded = Dense(128, activation='relu',activity_regularizer=regularizers.l1(l1_score_decode))(decoded)
decoded = Dense(256, activation='relu',activity_regularizer=regularizers.l1(l1_score_decode))(decoded)
decoded = Dense(784, activation='sigmoid',activity_regularizer=regularizers.l1(l1_score_decode))(decoded)
decoder = Model (input=connection_layer , output=decoded)
crunched = encoder(input_img)
final = decoder(crunched)
autoencoder = Model(input=input_img, output=final)
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
return (autoencoder)
from keras.datasets import mnist
import numpy as np
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.astype('float32') / 255.
x_test = x_test.astype('float32') / 255.
x_train = x_train.reshape((len(x_train), np.prod(x_train.shape[1:])))
x_test = x_test.reshape((len(x_test), np.prod(x_test.shape[1:])))
print x_train.shape
print x_test.shape
noise_factor = 0.5
x_test_noisy = x_test + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_test.shape)
x_test_noisy = np.clip(x_test_noisy, 0., 1.)
autoencoder=autoencoder_block(input_img,0,0)
for i in range (10):
x_train_noisy = x_train + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=x_train.shape)
x_train_noisy = np.clip(x_train_noisy, 0., 1.)
checkpointer=ModelCheckpoint(filepath_for_w, monitor='val_loss', verbose=0, save_best_only=True, save_weights_only=True, mode='auto', period=1),
autoencoder.fit(x_train_noisy, x_train,
epochs=10,
batch_size=256,
shuffle=True,
validation_data=(x_test_noisy, x_test),
callbacks=([checkpointer]))
autoencoder.load_weights(filepath_for_w) # load weights from the best in the run
decoded_imgs = autoencoder.predict(x_test_noisy) # save results for this stage for presentation
np.save('decoded'+str(i)+'.npy',decoded_imgs) ####
np.save('tested.npy',x_test_noisy)
np.save ('true_catagories.npy',y_test)
np.save('original.npy',x_test)
autoencoder.save('denoise_by_AE_model_1.h5')
我做错了什么?非常感谢:)
最佳答案
你的问题可能在这一行之内
callbacks=([checkpointer]))
您需要删除括号,因为回调需要列表,而不是元组,尝试:
callbacks=[checkpointer]
我还注意到您的检查点以逗号结尾,您也应该将其删除。
checkpointer=ModelCheckpoint(filepath_for_w, monitor='val_loss', verbose=0, save_best_only=True, save_weights_only=True, mode='auto', period=1),
关于python - 使用 Keras 回调保存最好的 val_loss,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47769181/
我在下面的类(class)中尝试获取包含每次训练的损失和验证损失的元组列表 class LossHistory(keras.callbacks.Callback): def on_train_
我是 tensorflow 新手,我正在尝试通过 github 中的示例来学习它,现在我找到了一个示例,但损失和 val_loss 的结果大于“1”(您可以在下面看到结果在 800 之间)和 700
我有一个简单的问题突然让我怀疑我的工作。 如果我只有训练和验证集,我是否可以在训练时监控 val_loss,或者这会增加我的训练偏差。我想在验证集训练结束时测试我的准确性,但突然我在想,如果我在训练时
当我在自定义回调中手动计算验证损失时,结果与使用 L2 内核正则化时 keras 报告的结果不同。 示例代码: class ValidationCallback(Callback): def
(使用 keras)训练模型时,val_loss(如 keras 训练日志中所示)/epoch_loss(如张量板中所示)指标是什么测量模型何时有多个输出?如果这很重要,那么这些输出是否也被加权了?
我是 Keras 新手,我正在使用它构建一个普通的神经网络来对数字 MNIST 数据集进行分类。 事先我已经将数据分为 3 部分:55000 个用于训练,5000 个用于评估,10000 个用于测试,
我根据此处讨论的内容为 mnist 数据集设置了一个去噪自动编码器: https://blog.keras.io/building-autoencoders-in-keras.html 我正在尝试查看
训练开始时,运行窗口中只显示loss和acc,缺少val_loss和val_acc。只有在最后,才会显示这些值。 model.add(Flatten()) model.add(Dense(512, a
我正在训练 Keras(Tensorflow 后端,Python,在 MacBook 上),并且在 fit_generator 函数的提前停止回调中遇到错误。错误如下: RuntimeWarning:
我正在尝试建立一个 LSTM 模型来预测股票第二天是上涨还是下跌。如您所见,一个简单的分类任务让我卡住了几天。我只选择 3 个特征来输入我的网络,下面我展示了我的预处理: # pre-processi
我正在尝试对图像进行分类,无论它们是猫、狗还是 Pandas 。数据包含所有图像(猫 + 狗 + Pandas ),标签包含它们的标签,但不知何故,当我将数据拟合到模型时,val_loss 和 val
我正在尝试对图像进行分类,无论它们是猫、狗还是 Pandas 。数据包含所有图像(猫 + 狗 + Pandas ),标签包含它们的标签,但不知何故,当我将数据拟合到模型时,val_loss 和 val
我正在用keras训练模型,并且在fit_generator函数的回调中遇到错误。我总是跑到纪元3rd并收到此错误 annotation_path = 'train2.txt' log_dir
我正在训练神经网络并得到以下输出。 loss 和 val_loss 都在减少,这让我很高兴。然而,val_acc 保持不变。这能有什么原因呢?我的数据非常不平衡,但我通过 sklearn comput
就像这样: x = keras.layers.Input(shape=(3,)) y = keras.layers.Dense(5)(x) G = keras.models.Model(x, y,na
我在 Keras 中记录“val_loss”和“val_acc”时遇到问题。 'loss' 和 'acc' 很容易,因为它们总是记录在 model.fit 的历史记录中。 如果在 fit 中启用验证,
我正在尝试使用带有 tensorflow 后端的 keras 自定义 resnet50。然而,在训练后,我的 val_loss 不断增加。尝试不同的学习率和批量大小并不能解决问题。 使用不同的预处理方
我实现了一个数据生成器,将我的训练数据分成 256 个小批量,以避免内存错误。它在训练数据上运行,但在每个时期结束时不显示验证损失和验证准确性。我还将数据生成器应用于验证数据并定义了验证步骤。我不知道
我创建了一个用于序列分类(二进制)的 LSTM 网络,其中每个样本有 25 个时间步长和 4 个特征。以下是我的keras网络拓扑: 上图,Dense层之后的激活层使用了softmax函数。我使用 b
我是 Keras 的新手,对如何理解我的模型结果有一些疑问。这是我的结果:(为方便起见,我只在每个 epoch 之后粘贴 loss acc val_loss val_acc) 对 4160 个样本进行
我是一名优秀的程序员,十分优秀!