将keras与Tensorboard一起使用时不断出现Nan值错误

时间:2019-01-21 15:54:38

标签: python tensorflow machine-learning keras deep-learning

我正在使用带conda的python3,并在tensorflow上使用keras进行深度学习,并使用tensorboard记录模型(我正在使用直方图)

我不断收到以下错误:

  

InvalidArgumentError(请参阅上面的回溯):总结为Nan   直方图:conv2d_1 / kernel_0 [[node conv2d_1 / kernel_0(已定义   在   /home/user/anaconda3/envs/siamese/lib/python2.7/site-packages/keras/callbacks.py:796)   = HistogramSummary [T = DT_FLOAT,_device =“ / job:localhost /副本:0 / task:0 / device:CPU:0”](conv2d_1 / kernel_0 / tag,   conv2d_1 / kernel / read / _139)]]

我读到here,这是因为张量板记录使nan值显式。

我试图更改adagrad to Adam 我试图降低学习率 我试图裁剪损失函数的值 我试图使k.epsilon值更高(1e-4) 我试图为预测增加一个小的价值 我将最后一层的激活更改为S形

似乎没有任何作用...

这是我的代码

    def triplet_wrapper(y_true, y_pred):
        import keras.backend as k
        from tensorflow.math import l2_normalize
        y_pred = k.clip(y_pred, 1e-6, 1e1)
        return k.clip(metric_learning.triplet_semihard_loss(k.squeeze(y_true, 1) + 1e-7, l2_normalize(y_pred, epsilon=1e-7)), 1e-7, 1e1)


        keras.losses.custom_loss = triplet_wrapper
        model5 = Sequential()
        model5.add(Conv2D(32, (3, 3), activation="relu", input_shape=input_shape))
        model5.add(MaxPool2D((2, 2)))
        for i in range(layers - 1):
            model5.add(Conv2D(64, (3, 3), activation="relu"))
            model5.add(MaxPool2D((2, 2)))
        model5.add(Flatten())
        model5.add(Dropout(0.5))
        model5.add(Dense(100, activation="sigmoid"))
        model5.add(Dropout(0.5))
        model5.compile(loss=triplet_wrapper, optimizer=Adam(lr=0.0001))

我使用此标准化数据加载器加载数据

i = ImageDataGenerator(rescale=1.0 / 255.0)

This是数据集(它很大,我将整个训练集放在一个目录-数据集中,然后运行此脚本)

0 个答案:

没有答案