gpt4 book ai didi

python - 如何在 Tensorflow 中使用多个输入来应用 tf.map_fn

转载 作者:行者123 更新时间:2023-12-05 02:11:59 24 4
gpt4 key购买 nike

我尝试使用 tf.map_fn 在 Pycharm 中使用 Tensorflow 获得多个输入的转折点。
但是,当我尝试这样做时,
我收到错误:TypeError: testzz() missing 1 required positional argument: 'data'

我该如何解决这个问题?或者如何获得 idxCut 的大小以使用 for 循环?

开发内容。

  • 在数据中找到阈值对应的索引(idxCut)。
  • 检查idxCut对应的数据是否为TPR。

我想使用 for 循环在数据中找到关于 idxCut 的 TPR(转折点比率)。
我使用 for 循环获取 idx、idx-1 和 idx + 1 之间的 TPR。
我想找到 data[idx] 高于其他 data[idx-1, idx+1]。

    def testtt(data):
### Cut-off Threshold
newData = data[5:num_input - 5] # shape = [1, 100]
idxCut = tf.where(newData > cutoff) + 5
idxCut = tf.squeeze(idxCut)
# The size of idxCut is always variable. shape = [1, 10] or shape = [1, 27] or etc

tq = tf.map_fn(testzz, (idxCut, data), dtype=tf.int32)
print('tqqqq ', tq)
    def testzz(idxCut, data):
v1 = tf.where(data[idxCut] > data[idxCut - 1], 1, 0)
v2 = tf.where(data[idxCut] > data[idxCut + 1], 1, 0)
return tf.where(v1 + v2 > 1, 1, 0)
Traceback (most recent call last):
File "D:/PycharmProject/Test_DCGAN_BioSignal/test_xcorr_all.py", line 263, in <module>
tprX = testtt(zX)
File "D:/PycharmProject/Test_DCGAN_BioSignal/test_xcorr_all.py", line 149, in testtt
tq = tf.map_fn(testzz, (idxCut, data), dtype=tf.int32)
File "C:\Users\UserName\Anaconda3\envs\TSFW_pycharm\lib\site-packages\tensorflow\python\ops\functional_ops.py", line 494, in map_fn
maximum_iterations=n)
File "C:\Users\UserName\Anaconda3\envs\TSFW_pycharm\lib\site-packages\tensorflow\python\ops\control_flow_ops.py", line 3291, in while_loop
return_same_structure)
File "C:\Users\UserName\Anaconda3\envs\TSFW_pycharm\lib\site-packages\tensorflow\python\ops\control_flow_ops.py", line 3004, in BuildLoop
pred, body, original_loop_vars, loop_vars, shape_invariants)
File "C:\Users\UserName\Anaconda3\envs\TSFW_pycharm\lib\site-packages\tensorflow\python\ops\control_flow_ops.py", line 2939, in _BuildLoop
body_result = body(*packed_vars_for_body)
File "C:\Users\UserName\Anaconda3\envs\TSFW_pycharm\lib\site-packages\tensorflow\python\ops\control_flow_ops.py", line 3260, in <lambda>
body = lambda i, lv: (i + 1, orig_body(*lv))
File "C:\Users\UserName\Anaconda3\envs\TSFW_pycharm\lib\site-packages\tensorflow\python\ops\functional_ops.py", line 483, in compute
packed_fn_values = fn(packed_values)

TypeError: testzz() missing 1 required positional argument: 'data'

最佳答案

当您为 tf.map_fn 提供多个张量时,它们的元素不会作为独立参数传递给给定函数,而是作为元组传递。这样做:

def testzz(inputs):
idxCut, data = inputs
v1 = tf.where(data[idxCut] > data[idxCut - 1], 1, 0)
v2 = tf.where(data[idxCut] > data[idxCut + 1], 1, 0)
return tf.where(v1 + v2 > 1, 1, 0)

关于python - 如何在 Tensorflow 中使用多个输入来应用 tf.map_fn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56663912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com