- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在维度为 的矩阵中每个像素的深度 channel 对应的每个向量上映射一个 TensorFlow 函数。 [batch_size, H, W, n_channels] .
换句话说,对于我在批处理中拥有的每个大小为 H x W 的图像:
tf.map_fn()
可能是一个选项,我尝试了以下解决方案,我递归地使用
tf.map_fn()
访问与每个像素相关的特征。然而,这种似乎是次优的,最重要的是
尝试反向传播梯度时会引发错误 .
import tensorflow as tf
from tensorflow import layers
def apply_function_on_pixel_features(incoming):
# at first the input is [None, W, H, n_channels]
if len(incoming.get_shape()) > 1:
return tf.map_fn(lambda x: apply_function_on_pixel_features(x), incoming)
else:
# here the input is [n_channels]
# apply some function that applies a transfomration and returns a vetor of the same size
output = my_custom_fun(incoming) # my_custom_fun() doesn't change the shape
return output
H = 128
W = 132
n_channels = 8
x1 = tf.placeholder(tf.float32, [None, H, W, 1])
x2 = layers.conv2d(x1, filters=n_channels, kernel_size=3, padding='same')
# now apply a function to the features vector associated to each pixel
x3 = apply_function_on_pixel_features(x2)
x4 = tf.nn.softmax(x3)
loss = cross_entropy(x4, labels)
optimizer = tf.train.AdamOptimizer(lr)
train_op = optimizer.minimize(loss) # <--- ERROR HERE!
File "/home/venvs/tensorflowGPU/lib/python3.6/site-packages/tensorflow/python/ops/control_flow_ops.py", line 2481, in AddOp
self._AddOpInternal(op)
File "/home/venvs/tensorflowGPU/lib/python3.6/site-packages/tensorflow/python/ops/control_flow_ops.py", line 2509, in _AddOpInternal
self._MaybeAddControlDependency(op)
File "/home/venvs/tensorflowGPU/lib/python3.6/site-packages/tensorflow/python/ops/control_flow_ops.py", line 2547, in _MaybeAddControlDependency
op._add_control_input(self.GetControlPivot().op)
AttributeError: 'NoneType' object has no attribute 'op'
最佳答案
@gabriele 关于必须依赖于 batch_size,您是否尝试过以下方式?此函数不依赖于 batch_size。您可以更换 map_fn
随心所欲。
def apply_function_on_pixel_features(incoming):
# get input shape:
_, W, H, C = incoming.get_shape().as_list()
incoming_flat = tf.reshape(incoming, shape=[-1, C])
# apply function on every vector of shape [1, C]
out_matrix = tf.map_fn(lambda x: x+1, incoming_flat) # dimension remains unchanged
# go back to the input shape shape [None, W, H, C]
out_matrix = tf.reshape(out_matrix, shape=[-1, W, H, C])
return out_matrix
import numpy as np
import tensorflow as tf
from tensorflow.keras.losses import categorical_crossentropy
def apply_function_on_pixel_features(incoming):
# get input shape:
_, W, H, C = incoming.get_shape().as_list()
incoming_flat = tf.reshape(incoming, shape=[-1])
# apply function on every vector of shape [1, C]
out_matrix = tf.map_fn(lambda x: x+1, incoming_flat) # dimension remains unchanged
# go back to the input shape shape [None, W, H, C]
out_matrix = tf.reshape(out_matrix, shape=[-1, W, H, C])
return out_matrix
H = 32
W = 32
x1 = tf.placeholder(tf.float32, [None, H, W, 1])
labels = tf.placeholder(tf.float32, [None, 10])
x2 = tf.layers.conv2d(x1, filters=1, kernel_size=3, padding='same')
# now apply a function to the features vector associated to each pixel
x3 = apply_function_on_pixel_features(x2)
x4 = tf.layers.flatten(x3)
x4 = tf.layers.dense(x4, units=10, activation='softmax')
loss = categorical_crossentropy(labels, x4)
optimizer = tf.train.AdamOptimizer(0.001)
train_op = optimizer.minimize(loss)
x = np.zeros(shape=(10, H, W, 1))
y = np.random.choice([0,1], size=(10, 10))
with tf.Session() as sess:
tf.global_variables_initializer().run()
sess.run(train_op, feed_dict={x1: x, labels:y})
关于tensorflow - 通过嵌套的 tf.map_fn 反向传播梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59094897/
当我在元组上使用 map_fn 时,我无法理解它的作用。为了测试,我做了以下事情: a = tf.constant([[1,2,3,4],[5,6,7,8],[9,10,11,12]]) b = tf
看演示: elems = np.array([1, 2, 3, 4, 5, 6]) squares = map_fn(lambda x: x * x, elems) # squares == [1,
我正在尝试构造我的参数,以便它们可以与 tf.map_fn() 一起正常工作,但大多数示例文档仅讨论与函数参数形状相同的数组或张量。 链接包括: Does tensorflow map_fn supp
tf.map_fn 是否像 python 的 native map 函数(下面提供的示例)所支持的那样支持采用多个张量? a = [1,2,3,4] b = [17,12,11,10] print(m
我想在维度为 的矩阵中每个像素的深度 channel 对应的每个向量上映射一个 TensorFlow 函数。 [batch_size, H, W, n_channels] . 换句话说,对于我在批处理
我运行下面的代码,以便从给定的索引矩阵获取填充矩阵(words_chars_ids 形状为 (6,200,20))。结果的形状为 (6,200,20,emb_size),其中对于输出中的每个条目,它都
我正在使用 Tensorflow 的数据集 API 读取各种图像(数据和标签)。由于数据集队列在 CPU 上,因此复制数据的成本很高。但是,我似乎找不到避免这种情况的方法。 问题:我能否以统一的顺序(
使用 Tensorflow 1.4 我想使用映射函数计算张量的元素逆 (x --> 1/x)。如果张量中某个元素的值为零,我希望输出为零。 以 tensor: [[0, 1, 0], [0.5, 0.
我正在研究 map_fn 函数,注意到它输出一个 TensorArray,这应该意味着它能够输出“锯齿状”张量(其中内部的张量具有不同的第一维)。 我试着用这段代码看看这个: import tenso
我尝试使用 tf.map_fn 在 Pycharm 中使用 Tensorflow 获得多个输入的转折点。 但是,当我尝试这样做时, 我收到错误:TypeError: testzz() missing
a = tf.constant([[1,2,3],[4,5,6]]) b = tf.constant([True, False], dtype=tf.bool) a.eval() array([[1,
我想处理不同形状的张量序列(列表)并输出另一个张量列表。考虑每个时间戳上具有不同隐藏状态大小的 RNN。类似的东西 输入:[tf.ones((1, 2, 2)), tf.ones((2, 2, 3))
我正在尝试使用 tensorflow 中的 map_fn 将转换应用于列向量,但它不起作用。 对于下面的列向量: elems = np.array([[1.0], [2.0], [3.0]]) 当我这
我有一个形状为 [a,n] 的张量 A,我需要用另一个形状为 B 的张量执行操作 my_op [b,n] 使得生成的张量 C 的形状为 [a,b]。 换句话说:对于 A (A[0], A 1 ,...
是否可以在具有单个值的张量上运行 map_fn? 以下工作: import tensorflow as tf a = tf.constant(1.0, shape=[3]) tf.map_fn(lam
所以我想要的东西的伪代码是: splitted_outputs = [tf.split(output, rate, axis=0) for output in outputs] 其中,outputs
我在 tensorflow 中构建一个神经网络,它处理 3D 数据并且应该预测输入数据中地标的位置。该策略是密集地(针对每个体素)预测实际地标周围半径 r 的球体中的类别,并预测指向地标实际位置的偏移
当我试图让 TensorFlow 的 map_fn 在我的 GPU 上运行时,我遇到了一个奇怪的问题。这是一个最小的错误示例: import numpy as np import tensorflow
我有一个张量,我使用 tf.map_fn 逐行处理。现在我想将索引作为参数包含在传递给 tf.map_fn 的函数中。在 numpy 中,我可以使用 enumerate 获取该信息并将其传递到我的 l
我正在尝试创建自己的损失函数: def custom_mse(y_true, y_pred): tmp = 10000000000 a = list(itertools.permuta
我是一名优秀的程序员,十分优秀!