gpt4 book ai didi

tensorflow - Tensorflow 2 中使用 tf.data.Dataset.from_generator 的 keras 模型的多个输入

转载 作者:行者123 更新时间:2023-12-02 23:17:45 26 4
gpt4 key购买 nike

我正在尝试在 keras 中实现一个具有多个输入的模型:

  • 图片 (200x200)
  • 一些数字 (1x50)
  • 三个一维信号(1x50000、2x100000)

为了提供该模型,我想编写一个与 tf.data.Dataset.from_generator 一起使用的生成器。来自 docs of from_generator ,我不清楚应该如何提供其参数 output_typesoutput_shapes。谁能帮我解决这个问题吗?

最佳答案

我遇到了类似的问题,我花了很多尝试才得到适合这些输入的结构。下面是一个具有 3 个输入和 2 个输出的网络示例,完成 .fit 调用。

以下内容适用于tensorflow 2.1.0

import tensorflow as tf
import numpy as np

def generator(N=10):
"""
Returns tuple of (inputs,outputs) where
inputs = (inp1,inp2,inp2)
outputs = (out1,out2)
"""
dt=np.float32
for i in range(N):
inputs = (np.random.rand(N,3,3,1).astype(dt),
np.random.rand(N,3,3,1).astype(dt),
np.random.rand(N,3,3,1).astype(dt))
outputs = (np.random.rand(N,3,3,1).astype(dt),
np.random.rand(N,3,3,1).astype(dt))
yield inputs,outputs

# Create dataset from generator
types = ( (tf.float32,tf.float32,tf.float32),
(tf.float32,tf.float32) )
shapes = (([None,3,3,1],[None,3,3,1],[None,3,3,1]),
([None,3,3,1],[None,3,3,1]))
data = tf.data.Dataset.from_generator(generator,
output_types=types,
output_shapes=shapes
)
# Define a model
inp1 = tf.keras.Input(shape=(3,3,1),name='inp1')
inp2 = tf.keras.Input(shape=(3,3,1),name='inp2')
inp3 = tf.keras.Input(shape=(3,3,1),name='inp3')
out1 = tf.keras.layers.Conv2D(1,kernel_size=3,padding='same')(inp1)
out2 = tf.keras.layers.Conv2D(1,kernel_size=3,padding='same')(inp2)
model = tf.keras.Model(inputs=[inp1,inp2,inp3],outputs=[out1,out2])
model.compile(loss=['mse','mse'])

# Train
model.fit(data)


关于tensorflow - Tensorflow 2 中使用 tf.data.Dataset.from_generator 的 keras 模型的多个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57175343/

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