相关疑难解决方法(0)

tensorflow中的条件图和访问张量大小的for循环

首先是广泛的问题:

  • 是否可以构建具有张量流的条件图?
  • 如果是,那么自动梯度计算和已实现的优化器是否可以使用它?
  • 我可以访问张量的形状并将其转换为整数,以便使用"if"条件和"for i in range()"循环吗?

我的实际用例是我想用可变张量长度进行一维卷积.为此,我首先需要一个if语句,如果长度大于1,则只执行卷积.然后我有一个for循环,通过卷积的张量.问题是这段代码:

for i in range(tf.shape(tensor)[0]): 
Run Code Online (Sandbox Code Playgroud)

不起作用,因为范围运算符需要一个整数.我能以某种方式将其转换为整数吗?

最后,我想用adagrad训练这个模型,无论是自动区分还是已经实现的优化器


编辑:

这是1D卷积,后来将成为我模型中两个层中的第一个.类型错误是每个触发一个版本的for循环的背后

import tensorflow as tf 
import numpy as np 

def convolve(s, Tl, Tr, b):

    if (tf.shape(s)[0] == 1):
        return s

    sum = 0

    # for i in range(tf.shape(s)[0] - 1): # error: TypeError: range() integer end argument expected, got Tensor
    # for i in range(s._shape._dims[0]._value - 1): # error: TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
    for i in range(s.get_shape().as_list()[0] - 1): # …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

9
推荐指数
1
解决办法
4057
查看次数

如何在 Tensorflow 中打印权重?

我正在尝试获取我的 hidden_​​layer2 的权重矩阵并打印它。似乎我能够获得权重矩阵,但我无法打印它。

使用时tf.Print(w, [w])不打印任何内容。使用时,print(tf.Print(w,[w])它至少会打印有关张量的信息:

Tensor("hidden_layer2_2/Print:0", shape=(3, 2), dtype=float32)
Run Code Online (Sandbox Code Playgroud)

我也尝试tf.Print()with -Statement之外使用,结果相同。

完整代码在这里,我只是在前馈神经网络中处理随机数据:https : //pastebin.com/KiQUBqK4

我的代码的一部分:

hidden_layer2 = tf.layers.dense(
        inputs=hidden_layer1,
        units=2,
        activation=tf.nn.relu,
        name="hidden_layer2")


with tf.variable_scope("hidden_layer2", reuse=True):
        w = tf.get_variable("kernel")
        tf.Print(w, [w])
        # Also tried tf.Print(hidden_layer2, [w])
Run Code Online (Sandbox Code Playgroud)

python tensorflow

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

在tensorflow中编写自定义成本函数

我试图在张量流中编写自己的成本函数,但显然我不能"切割"张量对象?

import tensorflow as tf
import numpy as np

# Establish variables
x = tf.placeholder("float", [None, 3])
W = tf.Variable(tf.zeros([3,6]))
b = tf.Variable(tf.zeros([6]))

# Establish model
y = tf.nn.softmax(tf.matmul(x,W) + b)

# Truth
y_ = tf.placeholder("float", [None,6])

def angle(v1, v2):
  return np.arccos(np.sum(v1*v2,axis=1))

def normVec(y):
  return np.cross(y[:,[0,2,4]],y[:,[1,3,5]])

angle_distance = -tf.reduce_sum(angle(normVec(y_),normVec(y)))
# This is the example code they give for cross entropy
cross_entropy = -tf.reduce_sum(y_*tf.log(y))
Run Code Online (Sandbox Code Playgroud)

我收到以下错误: TypeError: Bad slice index [0, 2, 4] of type <type 'list'>

numpy tensorflow

5
推荐指数
1
解决办法
4315
查看次数

有没有办法在 keras 中输出具有多个值的指标?

我正在研究一个 U-net 架构,以在 10 个类中执行分段。我想在每个时代之后计算每个班级的骰子系数。

我的网络的输出是一个形状为每个类的分割掩码堆栈(b_size, rows, cols, num_classes)。通过此输出,我按以下方式计算每个类的骰子系数:

def dice_metric(ground_truth, prediction):
    # initialize list with dice scores for each category
    dice_score_list = list()
    # get list of tensors with shape (rows, cols)
    ground_truth_unstacked = reshape_ground_truth(ground_truth)
    prediction_unstacked = tf.unstack(prediction, axis=-1)
    for (ground_truth_map, prediction_map) in zip(ground_truth_unstacked, prediction_unstacked):
        # calculate dice score for every class
        dice_i = dice_score(ground_truth_map, prediction_map)
        dice_score_list.append(dice_i)
    return tf.reduce_mean(dice_score_list, axis=[0])
Run Code Online (Sandbox Code Playgroud)

有什么方法可以打印骰子分数列表而不是平均值。所以在每个时期的输出是:

Epoch 107/200
- 13s - loss: 0.8896 - dice_metric: [dice_class_1, ... dice_class_10] - val_loss: 3.3417 - …
Run Code Online (Sandbox Code Playgroud)

keras tensorflow tensor

5
推荐指数
1
解决办法
1411
查看次数

Tf.Print()不打印张量的形状吗?

我使用Tensorflow编写了一个简单的分类程序,并获得了输出,除了我尝试打印用于模型参数,特征和偏差的张量的形状。功能定义:

import tensorflow as tf, numpy as np
from tensorflow.examples.tutorials.mnist import input_data


def get_weights(n_features, n_labels):
#    Return weights
    return tf.Variable( tf.truncated_normal((n_features, n_labels)) )

def get_biases(n_labels):
    # Return biases
    return tf.Variable( tf.zeros(n_labels))

def linear(input, w, b):
    #  Linear Function (xW + b)
#     return np.dot(input,w) + b 
    return tf.add(tf.matmul(input,w), b)

def mnist_features_labels(n_labels):
    """Gets the first <n> labels from the MNIST dataset
    """
    mnist_features = []
    mnist_labels = []
    mnist = input_data.read_data_sets('dataset/mnist', one_hot=True)

    # In order to make quizzes run faster, we're …
Run Code Online (Sandbox Code Playgroud)

classification machine-learning deep-learning python-3.5 tensorflow

4
推荐指数
1
解决办法
3601
查看次数

tf.print() vs Python print vs tensor.eval()

看来在Tensorflow中,至少有三种方法可以打印出张量的值。我到处阅读,但仍然很困惑

这些作者似乎将不同的用法总结为:

  • Python print:只能打印出张量的某些属性,例如它的形状,因为在计算图之外它只是一个操作。
  • tensor.eval(): 不确定它与tf.print()
  • tf.print():可以输出张量的实际值,但必须插入到图中的某个位置并被其他操作使用,否则它将是悬空的并且仍然不会打印。

我的困惑可能还在于我不确定我们可以在张量流计算图中访问多少Python功能,或者计算图“结束”和Python代码“开始”在哪里。例如

  1. 如果我在构建计算图的两行之间插入Python打印,当我sess.run()稍后调用时,会调用这一行吗?
  2. 如果我想在计算图中打印出多个张量值,我应该把这些语句放在哪里?
  3. tensor.eval()和 和有什么区别tf.print()?我应该如何以不同的方式使用它们?

python tensorflow

4
推荐指数
1
解决办法
3224
查看次数

在keras的model.fit中没有tf.Print的结果

我写了这个损失(用于测试keras中的自定义损失):

def loss(y_true, y_pred):
  loss = -tf.reduce_sum(y_true * tf.log(y_pred))
  loss = tf.Print(loss, [loss], 'loss = ')
return loss
Run Code Online (Sandbox Code Playgroud)

然后:

model.compile(loss=loss, 
              optimizer=keras.optimizers.Adadelta(),
              metrics=['accuracy'])
model.fit(x_train, y_train)
Run Code Online (Sandbox Code Playgroud)

而且没有tf.Print结果:

Epoch 1/12 
60000/60000 [==============================] - 12s 198us/step - loss: 25.3197 - acc: 0.9384 - val_loss: 5.6927 - val_acc: 0.9857
Epoch 2/12
60000/60000 [==============================] - 11s 187us/step - loss: 8.7803 - acc: 0.9798 - val_loss: 4.6938 - val_acc: 0.9888
Run Code Online (Sandbox Code Playgroud)

为什么?

keras tensorflow

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

TensorFlow和打印

我要去Tensorflow的教程.

我想显示的变量的值Wb,它们是重量和偏压分别和占位符x,y通过利用print.

可以显示吗?

print x,y,b,W
Run Code Online (Sandbox Code Playgroud)

我目前看到的如下

Tensor("Placeholder:0", shape=TensorShape([Dimension(None), Dimension(784)]), dtype=float32)
Tensor("Softmax:0", shape=TensorShape([Dimension(None), Dimension(10)]), dtype=float32)
tensorflow.python.ops.variables.Variable object at 0x1006b0b90>
tensorflow.python.ops.variables.Variable object at 0x101b76410>
Run Code Online (Sandbox Code Playgroud)

python tensorflow

0
推荐指数
1
解决办法
784
查看次数