![](/img/trans.png)
[英]tf.norm error ValueError: 'ord' must be a supported vector norm, got fro
[英]Tensorflow : Shapes must be equal rank, but are 4 and 1, for tf.norm
我試圖在conv2d層中找到所有過濾器的標准。 請在下面找到相同的代碼
conv1 = tf.layers.conv2d(
inputs=input_layer,
filters=32,
strides=(1, 1),
kernel_size=[3, 3],
padding="valid",
activation=tf.nn.relu,
use_bias=True,
kernel_regularizer=tf.nn.l2_loss,
bias_regularizer=tf.nn.l2_loss,
name="conv1")
var = [v for v in tf.trainable_variables() if "conv1" in v.name]
print(tf.norm(var,axis=4))
形狀必須相等,但必須為4和1。將形狀0與其他形狀合並。 輸入形狀為[3,3,3,32],[32]的“標准/打包”(op:“打包”)。
我嘗試使用從“無到4”的多個軸值,但沒有任何效果。 有人可以說明問題是什么以及如何解決?
您的代碼中有兩個錯誤。 一個是var
包含一個張量列表,而tf.norm()
只期望一個張量。 此外,權重的尺寸為4 ,尺寸從0開始編號,因此第四個尺寸的軸為3。此代碼(經過測試):
import tensorflow as tf
input_layer = tf.random_uniform( shape = ( 2, 10, 10, 2 ) )
conv1 = tf.layers.conv2d(
inputs=input_layer,
filters=32,
strides=(1, 1),
kernel_size=[3, 3],
padding="valid",
activation=tf.nn.relu,
use_bias=True,
kernel_regularizer=tf.nn.l2_loss,
bias_regularizer=tf.nn.l2_loss,
name="conv1")
var = [v for v in tf.trainable_variables() if "conv1" in v.name][ 0 ]
print( tf.norm( var, axis = 3 ) )
將輸出:
Tensor(“范數/壓縮:0”,shape =(3,3,2),dtype = float32)
沒有錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.