前提・実現したいこと
google colaboratory でBinarized Neural Network(BNN) をやろうとしています。
コードは下記のものを参考にしています。
https://github.com/Haosam/Binary-Neural-Network-Keras
BNNの論文ではconvolutionの際にuse_bias=Falseでやっていますが、
use_bias = True とすると、以下のエラーメッセージが発生しました。
何が原因なのかご教示いただきたく存じます。
発生している問題・エラーメッセージ
AttributeError Traceback (most recent call last)
<ipython-input-105-888916c9226d> in <module>()
7 bias_lr_multiplier=None, 8 bias_initializer='zeros', bias_regularizer=None, bias_constraint=None,
----> 9 padding='same', use_bias=use_bias, name='conv1'))
10 model.add(BatchNormalization(epsilon=epsilon, momentum=momentum, axis=1, name='bn1')) 11 model.add(Activation(binary_tanh, name='act1'))
7 frames
/content/binary_layers.py in build(self, input_shape)
140 nb_output = int(self.filters * base) 141 self.H = np.float32(np.sqrt(1.5 / (nb_input + nb_output)))
--> 142 #print('Glorot H: {}'.format(self.H))
143 144
AttributeError: 'BinaryConv2D' object has no attribute 'output_dim'
該当のソースコード
#mnist_cnn.py の該当箇所
model = Sequential()
conv1
model.add(BinaryConv2D(128, kernel_size=kernel_size, input_shape=(channels, img_rows, img_cols),
data_format='channels_first',
H=H, kernel_lr_multiplier=kernel_lr_multiplier,
padding='same', use_bias=use_bias, name='conv1'))
#model.add(BatchNormalization(epsilon=epsilon, momentum=momentum, axis=1, name='bn1'))
#binary_layers.py の該当箇所
if self.use_bias: self.lr_multipliers = [self.kernel_lr_multiplier, self.bias_lr_multiplier] self.bias = self.add_weight((self.output_dim,), initializer=self.bias_initializers, name='bias', regularizer=self.bias_regularizer, constraint=self.bias_constraint)
試したこと
https://github.com/DingKe/nn_playground/issues/13
こちらにある対策を試みましたが、解決できませんでした。
補足情報(FW/ツールのバージョンなど)
google colabのデフォルトの環境で実施しています。
あなたの回答
tips
プレビュー