2017-03-25 26 views
0

を再形成する再私は、次の例で探しています: https://github.com/aymericdamien/TensorFlow-Examples/blob/master/notebooks/4_Utils/save_restore_model.ipynbTensorflow - 重みを初期化し、pretrainedモデルのテンソル

私は隠されたレイヤ2の重みを再初期化し、最終層(out_layer)を再形成することができるようにしたいと10の代わりに3つのクラスになるようにしてください。

私は第2セッションでこれを行うことができます。つまり、訓練を受けたモデルを復元した後です。

私の主な目的は、テンソルフローでの学習の学習方法を学ぶことです。この例でこれを行うことで、私はそれを学ぶことができると思います。私は何をすべきか教えてくれますか?探してみましたが、類似の例は見つかりませんでした。

答えて

0

私はそれを解決しました。セッション、tensorflow変数と新しい重みを受信するSET_VALUEが値 重要な部分がある

def _convert_string_dtype(dtype): 
    if dtype == 'float16': 
     return tf.float16 
    if dtype == 'float32': 
     return tf.float32 
    elif dtype == 'float64': 
     return tf.float64 
    elif dtype == 'int16': 
     return tf.int16 
    elif dtype == 'int32': 
     return tf.int32 
    elif dtype == 'int64': 
     return tf.int64 
    elif dtype == 'uint8': 
     return tf.int8 
    elif dtype == 'uint16': 
     return tf.uint16 
    else: 
     raise ValueError('Unsupported dtype:', dtype) 

def set_value(sess, x, value): 
    """Sets the value of a variable, from a Numpy array. 
    # Arguments 
     x: Tensor to set to a new value. 
     value: Value to set the tensor to, as a Numpy array 
      (of the same shape). 
    """ 
    value = np.asarray(value) 
    tf_dtype = _convert_string_dtype(x.dtype.name.split('_')[0]) 
    if hasattr(x, '_assign_placeholder'): 
     assign_placeholder = x._assign_placeholder 
     assign_op = x._assign_op 
    else: 
     assign_placeholder = tf.placeholder(tf_dtype, shape=value.shape) 
     assign_op = x.assign(assign_placeholder) 
     x._assign_placeholder = assign_placeholder 
     x._assign_op = assign_op 
    return sess.run(assign_op, feed_dict={assign_placeholder: value}) 

# Tensorflow variable name 
tf_var_name ="h2_weights" 
var = [var for var in tf.global_variables() if var.op.name==tf_var_name][0] 
var_shape = var.get_shape().as_list() 

# Initialize to zero 
new_weights = np.zeros(var_shape) 

set_value(sess,var,new_weights)  

次の手順を実行して、重みを再初期化することが可能です

関連する問題