LSTM模型的随机性

时间:2018-10-08 04:48:38

标签: python tensorflow keras lstm

我有一个如下的LSTM模型:

TypeError: only length-1 arrays can be converted to Python scalars

每次我使用相同的数据集进行训练时,都会得到不同的模型。在大多数情况下,训练模型的性能是可以接受的,但有时确实很糟糕。我认为在训练或初始化过程中会有一些随机性。那么,如何解决所有问题以使每次培训都获得相同的模型?

3 个答案:

答案 0 :(得分:1)

我也遇到过Keras的问题,这与随机种子有关,您可以在导入Keras之前像这样修复随机种子,以便获得一致的结果。

import numpy as np
np.random.seed(1000)

import os
import random

os.environ['PYTHONHASHSEED'] = '0'
random.seed(12345)

# Also set the tf randomness to some fixed values like this if you need:
tf.set_random_seed(1234)

这对我有用。

答案 1 :(得分:0)

您可以保存

$paged = (get_query_var('paged')) ? absint( get_query_var('paged')) : 1 ;
    $ids = get_the_ID();
    $args = array('paged' => $paged ,  'post__in' => array($ids));
    $the_query = new WP_Query($args);
if ($the_query->have_posts()) :
 while ($the_query->have_posts()) : $the_query->the_post();
     $metas = get_post_meta(get_the_ID(),'value_gallery',false);
            foreach ($metas as $meta) {
                $key_val = explode(",", $meta);
                $image_chunk = array_chunk($key_val, 3);

                $page = get_query_var('page');
                $page = $page > 1 ? $page - 1 : 0 ;
                if (isset($key_val[$page])) {
                    foreach ($image_chunk[$page] as $image) {
                        echo "<div class='col-lg-4'>".
                        wp_get_attachment_image($image,"cherry-thumb-a") ."</div>";
                    }
                }
            }
endwhile;
the_posts_pagination( array(
'mid_size'  => 2,
'prev_text' => __( '<', 'textdomain' ),
'next_text' => __( '>', 'textdomain' ),
 ) );
wp_reset_postdata();
 endif;

并稍后加载

from keras.models import load_model
model.save("lstm_model.h5")

答案 2 :(得分:0)

权重在神经网络中随机初始化,因此有可能通过设计获得不同的结果。如果考虑反向传播的工作原理以及成本函数的最小化,您会发现您无法保证网络会找到“全局最小值”。修复种子是获得可重现结果的一个想法,但是另一方面,您将网络限制在固定的起始位置,在该位置可能永远无法达到全局最小值。

许多复杂的模型,尤其是LSTM都是不稳定的。您可以看一下卷积方法。我注意到,它们的性能几乎相同,并且更加稳定。 https://arxiv.org/pdf/1803.01271.pdf