如何将 Tensorflows scatter_nd 与切片一起使用?

     2023-02-23     158

关键词:

【中文标题】如何将 Tensorflows scatter_nd 与切片一起使用?【英文标题】:How can I use Tensorflows scatter_nd with slices? 【发布时间】:2019-04-02 11:23:35 【问题描述】:

我正在尝试仅优化变量的一部分。我找到了this 看似有用的答案。

但是我的变量是一个图像,我只想更改它的一部分,所以我试图将代码扩展到更多维度。这似乎工作正常:

import tensorflow as tf
import tensorflow.contrib.opt as opt

X = tf.Variable([[1.0, 2.0], [3.0, 4.0]])

# the next two lines need to change because
# manually specifying the values is not feasible
indexes = tf.constant([[0, 0], [1, 0]])
updates = [X[0, 0], X[1, 0]]

part_X = tf.scatter_nd(indexes, updates, [2, 2])
X_2 = part_X + tf.stop_gradient(-part_X + X)
Y = tf.constant([[2.5, -3.5], [5.5, -7.5]])
loss = tf.reduce_sum(tf.squared_difference(X_2, Y))
opt = opt.ScipyOptimizerInterface(loss, [X])

init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    opt.minimize(sess)
    print("X: ".format(X.eval()))

但是,由于我的图像尺寸和我想选择的区域要大得多,因此手动指定所有索引是不可行的。我想知道如何使用切片或范围分配来做到这一点。

【问题讨论】:

【参考方案1】:

你可以这样做:

import tensorflow as tf

# Input with size (50, 100)
X = tf.Variable([[0] * 100] * 50)
# Selected slice
row_start = 10
row_end = 30
col_start = 20
col_end = 50
# Make indices from meshgrid
indexes = tf.meshgrid(tf.range(row_start, row_end),
                      tf.range(col_start, col_end), indexing='ij')
indexes = tf.stack(indexes, axis=-1)
# Take slice
updates = X[row_start:row_end, col_start:col_end]
# Build tensor with "filtered" gradient
part_X = tf.scatter_nd(indexes, updates, tf.shape(X))
X_2 = part_X + tf.stop_gradient(-part_X + X)
# Continue as before...

【讨论】:

有人让 Tensorflow 分布式培训笔记本工作吗?

...布时间】:2019-09-1821:16:18【问题描述】:当我运行这个从Tensorflows文档站点链接的笔记本时,https://colab.research.google.com/github/tensorflow/docs/blob/r2. 查看详情

如何将流大小转换为其他或如何将流大小值传递给向量?

】如何将流大小转换为其他或如何将流大小值传递给向量?【英文标题】:Howtoconvertstreamsizetootherorhowtopassstreamsizevaluetovector?【发布时间】:2018-11-2414:52:52【问题描述】:我有一个问题,我需要将流大小值传递给向量。如果我没... 查看详情

如何将图像转换为 UIImage

】如何将图像转换为UIImage【英文标题】:HowtoconvertaimagetoUIImage【发布时间】:2019-07-1414:54:17【问题描述】:因为关于swiftUI的文档还不是很好,所以我想问一下如何将“图像”转换为“UIImage”或如何将“图像”转换为pngData/jpgData... 查看详情

如何将“'”转换为“''”

】如何将“\\\'”转换为“\\\'\\\'”【英文标题】:howtoconvert"\'"to"\'\'"如何将“\'”转换为“\'\'”【发布时间】:2019-08-0508:34:46【问题描述】:我正在处理用户数据并将其存储到可能包含"\'"、"\'\'"或&... 查看详情

如何将代码隐藏页面添加到视图或部分视图

】如何将代码隐藏页面添加到视图或部分视图【英文标题】:howtoaddacode-behindpagetoavieworpartialview【发布时间】:2010-10-1509:24:53【问题描述】:我注意到最新版本的ASP.NETMVC视图不再默认具有代码隐藏类。现在如何将代码隐藏类添加... 查看详情

如何将 SKSpriteNode 放在前面?

】如何将SKSpriteNode放在前面?【英文标题】:HowtobringaSKSpriteNodetofront?【发布时间】:2013-10-0922:01:00【问题描述】:如何将SKSpriteNode放在所有其他节点的前面?使用UIView,我可以使用bringSubviewToFront将uiview带到其他视图的前面。【... 查看详情

如何将数据上传到 Amazon Redshift

】如何将数据上传到AmazonRedshift【英文标题】:HowtouploaddatatoAmazonRedshift【发布时间】:2018-03-1611:12:47【问题描述】:我想将数据自动上传到Redshift。我知道如何访问红移和提取数据。但我不知道如何将数据加载到表中。我听说您... 查看详情

如何将 \\ 更改为 \

】如何将\\\\\\\\更改为\\\\【英文标题】:Howtochange\\\\into\\如何将\\\\更改为\\【发布时间】:2012-08-1701:46:00【问题描述】:我刚刚做了一个小程序,将路径保存到INI文件中。但在输出中,路径是这样写的:C:\\\\Windows我希望它是这... 查看详情

C++:如何将 MessageBox 居中?

】C++:如何将MessageBox居中?【英文标题】:C++:HowtocenterMessageBox?【发布时间】:2011-06-0921:56:02【问题描述】:将VisualStudioC++与MFC结合使用。如何将MessageBox居中到它的父窗口?目前它以桌面为中心。【问题讨论】:在MessageBox调用... 查看详情

如何确保 WSASend() 将发送数据?

】如何确保WSASend()将发送数据?【英文标题】:HowtomakesurethatWSASend()willsendthedata?【发布时间】:2015-02-2620:27:46【问题描述】:WSASend()将立即返回是否发送数据。但是如何确保数据将被发送,例如我的UI中有一个按钮,按下时将发... 查看详情

如何将 IvParameterSpec 写入文件?

】如何将IvParameterSpec写入文件?【英文标题】:howtowriteIvParameterSpectoafile?【发布时间】:2013-10-1506:20:13【问题描述】:我使用以下代码将我的SecretKey写入文件。同样,我必须将ivParameterSpec写入另一个文件。我该怎么做?SecretKeykey... 查看详情

如何将邮件转换为 eml?

】如何将邮件转换为eml?【英文标题】:Howtoconvertmailstoeml?【发布时间】:2021-09-0415:30:13【问题描述】:将邮件转换为EML?我有一个服务器,我想将邮件转换为EML以进行备份如何做到这一点?尝试了以下方法;importimaplibimportgetpas... 查看详情

如何将波形数据转换为复数

】如何将波形数据转换为复数【英文标题】:HowtoconvertwavedataintoComplexnumbers【发布时间】:2011-07-0510:11:19【问题描述】:我正在从麦克风读取原始数据并输入FFT。我正在尝试的两个FFT库(AForge和Exocortex.DSP)将复数作为输入并给出... 查看详情

如何将数组写入文件Java

】如何将数组写入文件Java【英文标题】:howtowriteanarraytoafileJava【发布时间】:2012-11-2208:00:45【问题描述】:我一直在尝试将数组写入文件。我知道如何将整数或字符串写入文件,但带上数组让我感到困惑。我现在正在使用这个... 查看详情

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

】在Avkit中如何使用这三行代码,以及如何将音乐静音”【英文标题】:InAvkithowitcanbeusedthisthreelinesofcodes,andalsohowtomutethemusic"【发布时间】:2017-06-2503:43:35【问题描述】:在AVKit这三行代码如何使用以及如何将音乐静音?moviePl... 查看详情

如何将对象转换为输入流

】如何将对象转换为输入流【英文标题】:HowcanIconvertanObjecttoInputstream【发布时间】:2012-03-0501:40:34【问题描述】:如何将java对象转换为InputStream?【问题讨论】:【参考方案1】:您可以使用ObjectOutputStream您将对象(下面代码中... 查看详情

如何将徽章添加到 UIButton

】如何将徽章添加到UIButton【英文标题】:HowtoAddabadgetoUIButton【发布时间】:2017-01-0507:18:24【问题描述】:在我的应用程序中,我需要将左上角的计数添加到UIButton,例如UIButtonItem。怎么可能以及如何将MIBadgeButton添加到我的项目... 查看详情

如何将控件添加到 Tab 控件

】如何将控件添加到Tab控件【英文标题】:HowtoaddcontrolstoaTabcontrol【发布时间】:2011-01-1520:32:15【问题描述】:我在我的GUI应用程序中使用选项卡控件,我知道如何从中添加和删除选项卡(TCM_INSERTITEM等),但我不知道如何将其... 查看详情