2017-01-30 14 views
0

私はさまざまな例を見つけました。しかし、私はそれらを理解できませんでした。私のリストはここにあります: 最初のリストで私は体重を節約しており、第2の対応する鍵には が格納されています。例えばsavezを使用して配列を保存する方法

 self.weight_list=[] 
     self.keys=[] 

# conv1_1 
    with tf.name_scope('conv1_1') as scope: 
     kernel = tf.Variable(tf.truncated_normal([3, 3, 3, 64], dtype=tf.float32, 
               stddev=1e-1), name='weights') 
     conv = tf.nn.conv2d(images, kernel, [1, 1, 1, 1], padding='SAME') 
     biases = tf.Variable(tf.constant(0.0, shape=[64], dtype=tf.float32), 
          trainable=True, name='biases') 
     out = tf.nn.bias_add(conv, biases) 
     self.conv1_1 = tf.nn.relu(out, name=scope) 
     self.parameters += [kernel, biases] 
    self.keys.append('conv1_1') 
    self.weight_list.append(self.parameters) 

私はNPZ形式でこれらの配列を保存していませんか。

How to use `numpy.savez` in a loop for save more than one array? この例を実装しようとしましたが、このエラーが発生しています。ここで

Traceback (most recent call last): 
    File "f.py", line 355, in <module> 
    vgg = vgg16(imgs1,imgs2, 'vgg16_weights.npz', sess) 
    File "f.py", line 43, in __init__ 
    self.SaveWeights() 
    File "f.py", line 344, in SaveWeights 
    exec(str_exec_save) 
    File "<string>", line 1, in <module> 
NameError: name 'conv1_1' is not defined 

が、私はこの

def SaveWeights(self): 

    tmp = file("vgg16_predict.npz",'wb') 




     # save the npz file with the variables you selected 
    str_exec_save = "np.savez(tmp,"  
    for i in range(len(self.keys)):  
     str_exec_save += "%s = %s," % (self.keys[i],self.keys[i]) 
     str_exec_save += ")" 
     exec(str_exec_save) 

    tmp.close 
+1

あなたが試したことを示して、それがどのように失敗しているのかを説明できますか? – glibdud

+0

私はこの例を見てきます。http://stackoverflow.com/questions/22712292/how-to-use-numpy-savez-in-a-loop-for-save-more-than-one-array – user3102085

+0

何私ドンキーと重みのリストをリンクするにはどうすればいいですか?私の質問が明確であることを願っています。 – user3102085

答えて

1

それを実装する方法ですおそらく動作します:

numpy.savez(**dict(zip(self.keys, self.weight_list))) 

引数をキーワードに辞書を解凍するために二重のアスタリスク**で。これは概念的にはnumpy.savez(conv1_1=self.parameters, conv1_2=..., ...)と同じです。

+0

があなたのソリューションを実装しようとしました。このエラーが発生しました:トレースバック(最新の最後の呼び出し): ファイル "f.py"、行350、 vgg = vgg16(imgs1、imgs2、 'vgg16_weights.npz'、sess) ファイル "f.py"self.aveWeights() SaveWeightsのファイル "f.py"、行339 np.savez(** dict(zip(self.keys、self.weight_list))) TypeError:savez )少なくとも1つの引数(与えられた0)を受け取ります – user3102085

+0

私は引数selfも追加しました。ありがとう – user3102085

関連する問題