小编Muh*_*hal的帖子

KERAS:如何使用与权重所需形状相同的张量显式设置 Conv2D 层的权重?

我想通过显式定义层的权重矩阵来创建 conv2d 层(Conv2D 将 use_bias 参数设置为 False)。我一直在尝试使用 layer.set_weights([K]) 来做到这一点,其中 K 是 (?, 7, 7, 512, 512) 张量。

在简单的 Tensorflow API 中,可以通过将张量传递给 tf.nn.conv2d(input, filter,..) 中的过滤器参数来完成

此外,我还有更多问题,我表明我应该解决 K 张量中的批量维度,因为它是由网络生成的

基本上我想实现一个超网络,其中我从张量 K 中的另一个网络生成了上面指定的 Conv2D 层的权重。权重张量 K 的形状为 [高度、宽度、过滤器、通道]

template= Input(shape=(448,684,3))
hyper_net= VGG16(weights='imagenet', include_top=False, 
input_tensor=None, input_shape=(448,684, 3))

k1= hyper_net(template)

kconv1= hyper_net.get_layer(name='block5_conv1')
config_conv1= kconv1.get_config()
k1conv1 = Conv2D.from_config(config_conv1)(k1)

kconv2= hyper_net.get_layer(name='block5_conv2')
config_conv2= kconv2.get_config()
k1conv2 = Conv2D.from_config(config_conv2)(k1conv1)

k1pool1= MaxPooling2D(pool_size=(2,3))(k1conv2)

k1pool1= Reshape((7,7,512,1))(k1pool1)
print(k1pool1.shape)

K= Conv3D(512, (1,1,1), strides=(1, 1, 1), padding='valid', 
activation=None, use_bias=True, kernel_initializer='he_normal', bias_initializer='zeros', kernel_regularizer=l2(0.01), bias_regularizer=l2(0.01))(k1pool1)


ortho= Input(tensor=tf.convert_to_tensor(O))
base_model …
Run Code Online (Sandbox Code Playgroud)

machine-learning convolution conv-neural-network keras tensorflow

8
推荐指数
1
解决办法
7642
查看次数

损失不减少 - Pytorch

我正在使用骰子损失来实现涉及超网络的全卷积网络(FCN)。该模型有两个输入和一个输出,即二进制分割图。模型正在更新权重,但损失是恒定的。它甚至没有过度拟合仅三个训练示例

我也使用了其他损失函数,如骰子+二元交叉熵损失、jacard 损失和 MSE 损失,但损失几乎是恒定的。我还尝试了几乎所有激活函数,例如 ReLU、LeakyReLU、Tanh。此外,我必须在输出处使用 sigmoid,因为我需要输出在 [0,1] 范围内,学习率为 0.01。此外,我还尝试了不同的学习率,例如 0.0001、0.001、0.1。无论训练开始时的损失是多少,它总是以这个值出现

这显示了三个训练示例的梯度。以及整体损失

tensor(0.0010, device='cuda:0')
tensor(0.1377, device='cuda:0')
tensor(0.1582, device='cuda:0')
Epoch 9, Overall loss = 0.9604763123724196, mIOU=0.019766070265581623
tensor(0.0014, device='cuda:0')
tensor(0.0898, device='cuda:0')
tensor(0.0455, device='cuda:0')
Epoch 10, Overall loss = 0.9616242945194244, mIOU=0.01919178702228237
tensor(0.0886, device='cuda:0')
tensor(0.2561, device='cuda:0')
tensor(0.0108, device='cuda:0')
Epoch 11, Overall loss = 0.960331304506822, mIOU=0.01983801422510155
Run Code Online (Sandbox Code Playgroud)

我预计损失会在几个时期内收敛。我应该怎么办?

machine-learning conv-neural-network pytorch

2
推荐指数
1
解决办法
3万
查看次数