2

畳み込みニューラル ネットワークを作成するために、Lasagne と Theano を実行しています。私は現在、

l_shape = lasagne.layers.ReshapeLayer(l_in, (-1, 3,130, 130))
l_conv1 = lasagne.layers.Conv2DLayer(l_shape, num_filters=32, filter_size=3, pad=1)
l_conv1_1 = lasagne.layers.Conv2DLayer(l_conv1, num_filters=32, filter_size=3, pad=1)
l_pool1 = lasagne.layers.MaxPool2DLayer(l_conv1_1, 2)
l_conv2 = lasagne.layers.Conv2DLayer(l_pool1, num_filters=64, filter_size=3, pad=1)
l_conv2_2 = lasagne.layers.Conv2DLayer(l_conv2, num_filters=64, filter_size=3, pad=1)
l_pool2 = lasagne.layers.MaxPool2DLayer(l_conv2_2, 2)
l_conv3 = lasagne.layers.Conv2DLayer(l_pool2, num_filters=64, filter_size=3, pad=1)
l_conv3_2 = lasagne.layers.Conv2DLayer(l_conv3, num_filters=64, filter_size=3, pad=1)
l_pool3 = lasagne.layers.MaxPool2DLayer(l_conv3_2, 2)
l_conv4 = lasagne.layers.Conv2DLayer(l_pool3, num_filters=64, filter_size=3, pad=1)
l_conv4_2 = lasagne.layers.Conv2DLayer(l_conv4, num_filters=64, filter_size=3, pad=1)
l_pool4 = lasagne.layers.MaxPool2DLayer(l_conv4_2, 2)
l_conv5 = lasagne.layers.Conv2DLayer(l_pool4, num_filters=64, filter_size=3, pad=1)
l_conv5_2 = lasagne.layers.Conv2DLayer(l_conv5, num_filters=64, filter_size=3, pad=1)
l_pool5 = lasagne.layers.MaxPool2DLayer(l_conv5_2, 2)
l_out = lasagne.layers.DenseLayer(l_pool5, num_units=2, nonlinearity=lasagne.nonlinearities.softmax)

私の最後のレイヤーは、ソフトマックスを使用して分類を出力するdenselayerです。私の最終的な目標は、分類 (0 または 1) ではなく、確率を取得することです。

get_all_param_values() を呼び出すと、広範な配列が提供されます。最後の高密度レイヤーの重みとバイアスのみが必要です。これについてどう思いますか?l_out.W と l_out.b と get_values() を試しました。

前もって感謝します!

4

2 に答える 2

1

を使用して、単一のレイヤーのパラメーターを取得できますget_params。これはドキュメントで説明されています。

于 2016-02-09T10:25:06.210 に答える
1

貼り付けたものが l_in を参照しているため、コードを変更しましたが、コードに l_in が含まれていません。次のネットワークを定義しました。

l_shape = lasagne.layers.InputLayer(shape = (None, 3, 130, 130))
l_conv1 = lasagne.layers.Conv2DLayer(l_shape, num_filters=32, filter_size=3, pad=1)
l_conv1_1 = lasagne.layers.Conv2DLayer(l_conv1, num_filters=32, filter_size=3, pad=1)
l_pool1 = lasagne.layers.MaxPool2DLayer(l_conv1_1, 2)
l_conv2 = lasagne.layers.Conv2DLayer(l_pool1, num_filters=64, filter_size=3, pad=1)
l_conv2_2 = lasagne.layers.Conv2DLayer(l_conv2, num_filters=64, filter_size=3, pad=1)
l_pool2 = lasagne.layers.MaxPool2DLayer(l_conv2_2, 2)
l_conv3 = lasagne.layers.Conv2DLayer(l_pool2, num_filters=64, filter_size=3, pad=1)
l_conv3_2 = lasagne.layers.Conv2DLayer(l_conv3, num_filters=64, filter_size=3, pad=1)
l_pool3 = lasagne.layers.MaxPool2DLayer(l_conv3_2, 2)
l_conv4 = lasagne.layers.Conv2DLayer(l_pool3, num_filters=64, filter_size=3, pad=1)
l_conv4_2 = lasagne.layers.Conv2DLayer(l_conv4, num_filters=64, filter_size=3, pad=1)
l_pool4 = lasagne.layers.MaxPool2DLayer(l_conv4_2, 2)
l_conv5 = lasagne.layers.Conv2DLayer(l_pool4, num_filters=64, filter_size=3, pad=1)
l_conv5_2 = lasagne.layers.Conv2DLayer(l_conv5, num_filters=64, filter_size=3, pad=1)
l_pool5 = lasagne.layers.MaxPool2DLayer(l_conv5_2, 2)
l_out = lasagne.layers.DenseLayer(l_pool5, num_units=2, nonlinearity=lasagne.nonlinearities.softmax)

Daniel Renshawの答えを実装するだけです:

params = l_out.get_params()
W = params[0].get_value()

params を出力すると、l_out のすべてのパラメータが表示されます。

[W, b] 

したがって、params、params[0]、および params[1] の各要素は Theano 共有変数であり、params[i].get_value() によって数値を取得できます。

于 2016-02-13T14:14:31.533 に答える