AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题

问题[tensorflow](coding)

Martin Hope
Shinobu HUYUGIRI
Asked: 2025-04-10 03:22:18 +0800 CST

如何将 Kaggle 上的 TensorFlow 1“BigGAN”模型转换为 TensorFlow Lite 格式?

  • 6

如何将 Kaggle 上的 TensorFlow 1“BigGAN”模型转换为 TensorFlow Lite 格式?

https://www.tensorflow.org/hub/tutorials/biggan_ Generation_with_tf_hub?hl=ja

我正在尝试实现以下源代码来定义 TensorFlow.Keras 模型并将其转换为 TensorFlow Lite 格式,但是当我尝试使用 hub.KerasLayer 创建的 Layer 在 Function API 中定义模型时,出现以下异常:

而且我也不知道如何指定 model.build() 的参数。

此模型需要多个输入,因此我无法使用该解决方案通过以下 URL 中显示的 Sequential API 构建模型。 如何保存输入形状为 (1, None, None, 3) 且 None 固定为 256 的模型?

有没有什么好的解决办法?

无法运行的源代码

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
from tensorflow.compat.v1 import keras
from tensorflow.compat.v1.keras import layers
import tensorflow_hub as hub

input_truncation = keras.Input(shape=(), name='truncation')
input_y = keras.Input(shape=(1000, ), name='y')
input_z = keras.Input(shape=(128, ), name='z')
hub_layer = hub.KerasLayer(
            "https://www.kaggle.com/models/deepmind/biggan/TensorFlow1/128/2",
            trainable=False,
            signature="default", 
            signature_outputs_as_dict=True,
            input_shape = [[], [1000], [128]],
            output_shape = [128, 128, 3],
        )

### -->> TypeError occur HERE
output = hub_layer([input_truncation, input_y, input_z])
### <<-- TypeError occur HERE

model = tf.keras.models.Model(inputs=[input_truncation, input_y, input_z], outputs=[output])

### -->> How to build this model 
model.build([1], [1, 1000], [1, 128])
### <<-- How to build this model

model.summary()
model.save("biggan-128")

converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
open("converted_model.tflite", "wb").write(tflite_model)

发生的异常

 TypeError
in user code:

    File "/home/shino/anaconda3/envs/movenet/lib/python3.10/site-packages/tensorflow_hub/keras_layer.py", line 242, in call  *
        result = f()

    TypeError: pruned(truncation, y, z) takes 0 positional arguments, got 1.
  File "/tmp/__autograph_generated_fileedgegq8b.py", line 74, in tf__call
    ag__.if_stmt(ag__.not_(ag__.ld(self)._has_training_argument), if_body_3, else_body_3, get_state_3, set_state_3, ('result', 'training'), 1)
  File "/tmp/__autograph_generated_fileedgegq8b.py", line 37, in if_body_3
    result = ag__.converted_call(ag__.ld(f), (), None, fscope)
TypeError: pruned(truncation, y, z) takes 0 positional arguments, got 1.

During handling of the above exception, another exception occurred:

  File "/tmp/__autograph_generated_fileedgegq8b.py", line 37, in if_body_3
    result = ag__.converted_call(ag__.ld(f), (), None, fscope)
  File "/tmp/__autograph_generated_fileedgegq8b.py", line 74, in tf__call
    ag__.if_stmt(ag__.not_(ag__.ld(self)._has_training_argument), if_body_3, else_body_3, get_state_3, set_state_3, ('result', 'training'), 1)
  File "/home/shino/sandbox/python/biggan/biggan_export.py", line 21, in <module>
    output = hub_layer([input_truncation, input_y, input_z])
TypeError: in user code:

    File "/home/shino/anaconda3/envs/movenet/lib/python3.10/site-packages/tensorflow_hub/keras_layer.py", line 242, in call  *
        result = f()

    TypeError: pruned(truncation, y, z) takes 0 positional arguments, got 1.

要求.txt

absl-py==2.2.1
astunparse==1.6.3
cachetools==5.5.2
certifi==2025.1.31
charset-normalizer==3.4.1
coloredlogs==15.0.1
flatbuffers==1.12
gast==0.4.0
google-auth==2.38.0
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
grpcio==1.71.0
h5py==3.13.0
humanfriendly==10.0
idna==3.10
keras==2.9.0
Keras-Preprocessing==1.1.2
libclang==18.1.1
Markdown==3.7
MarkupSafe==3.0.2
mpmath==1.3.0
numpy==1.26.4
oauthlib==3.2.2
onnx==1.14.1
onnx-graphsurgeon==0.5.7
onnx2tf==1.26.9
onnxruntime==1.21.0
opt_einsum==3.4.0
packaging==24.2
protobuf==3.20.3
psutil==7.0.0
pyasn1==0.6.1
pyasn1_modules==0.4.2
requests==2.32.3
requests-oauthlib==2.0.0
rsa==4.9
six==1.17.0
sng4onnx==1.0.4
sympy==1.13.3
tensorboard==2.9.0
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorflow==2.9.0
tensorflow-estimator==2.9.0
tensorflow-hub==0.16.1
tensorflow-io-gcs-filesystem==0.37.1
tensorflow-neuron==1.0
termcolor==3.0.0
tf-keras==2.14.1
tf2onnx==1.13.0
typing_extensions==4.13.0
urllib3==2.3.0
Werkzeug==3.1.3
wrapt==1.17.2
tensorflow
  • 1 个回答
  • 21 Views
Martin Hope
Fred Myers
Asked: 2025-01-20 08:52:43 +0800 CST

为什么训练集越大,TensorFlow 损失就越大?

  • 7

我创建了一个非常简单的 TensorFlow 模型,如果我有一组训练数据,它就可以工作。但是,如果我再添加一个训练示例,那么损失就会变为无穷大,模型就无法工作了。尽管这两个示例的模型是相同的。唯一的区别是增加了一个训练示例。

我想制作一个大型训练集,但如果训练集太大,损失会发散,这似乎是不可能的。在有额外训练示例的情况下,预测也完全错误。在少一个示例的情况下,预测是正确的。在下面的代码中,模型有 20 个训练示例,损失趋于无穷大。模型 2 有 19 个训练示例,损失函数趋于(接近)零。

<pre>    
    import tensorflow as tf
    import numpy as np
    from tensorflow import keras

    print(tf.__version__)``

    def hw_function(x):
        y = (2. * x) - 1.
        return y

    # Build a simple Sequential model
    model = tf.keras.Sequential([
        tf.keras.Input(shape=(1,)),
        tf.keras.layers.Dense(units=1)])

    # Compile the model
    model.compile(optimizer='sgd', loss='mean_squared_error')

    # Declare model inputs and outputs for training
    xs=[x for x in range(-1, 19, 1)]
    ys=[x for x in range(-3, 36, 2)]

    xs=np.array(xs, dtype=float)
    ys=np.array(ys, dtype=float)

    # Train the model
    model.fit(xs, ys, verbose=1, epochs=500)

    # Make a prediction
    p = np.array([100.0, 900.0], dtype=float)
    print(model.predict(p))


    # Build exactly the same model but have one more training example
    model2 = tf.keras.Sequential([
        tf.keras.Input(shape=(1,)),
        tf.keras.layers.Dense(units=1)])
    model2.compile(optimizer='sgd', loss='mean_squared_error')
    xs2=[x for x in range(-1, 18, 1)]
    ys2=[x for x in range(-3, 34, 2)]

    xs2=np.array(xs2, dtype=float)
    ys2=np.array(ys2, dtype=float)

    # Train the model
    model2.fit(xs2, ys2, verbose=1, epochs=500)
    p = np.array([100.0, 900.0], dtype=float)
    print(model2.predict(p))
<code>
tensorflow
  • 1 个回答
  • 36 Views
Martin Hope
Julier
Asked: 2024-10-20 19:14:54 +0800 CST

TensorFlow 中 torch.autograd 的类似物

  • 5

我想在模型训练后获取其 dradient。例如,我有输入张量 X 和输出 y,即 y = model(x)。因此,使用 pytorch,我可以使用以下命令计算 dradient:

y = model(x)
dydx = torch.autograd.grad(Y, X, torch.ones_like(Y), create_graph=True)[0][:, 0]

我希望用TensorFlow框架训练模型后得到相同的值。

我试过:

y = model.predict_u(x)
dydx = tf.gradients(y, x)[0]

但是我得到的 dydx 为 NoneType。我尝试将 dydx 包含在模型类中并通过 tf.Session 获取梯度,但出现了:“ResourceExhaustedError:图形执行错误”。

我曾使用过 Pytorch 框架,现在我决定尝试 TensorFlow,但遇到了一些困难。

tensorflow
  • 1 个回答
  • 36 Views
Martin Hope
Whitehot
Asked: 2024-09-02 19:49:35 +0800 CST

VAE 的测试步骤仅返回 0

  • 5

我又开始着手去年(大部分)停止的一个项目。我已经遇到过这个问题,当时这个答案解决了它。我目前正在运行基本上与该答案完全相同的脚本,但现在在训练过程中,我得到的验证损失(包括 KL 和重建)又全部为 0。

history = var_autoencoder.fit( x_train, x_train, epochs=1000, shuffle=True, validation_data=(x_test, x_test), 
                 callbacks=kcb.EarlyStopping(monitor="val_loss", patience=30, restore_best_weights=True) )

Epoch 1/1000
107/107 [==============================] - 3s 30ms/step - loss: 118.1165 - reconstruction_loss: 117.0647 - kl_loss: 1.0518 - val_loss: 0.0000e+00 - val_reconstruction_loss: 0.0000e+00 - val_kl_loss: 0.0000e+00
Epoch 2/1000
107/107 [==============================] - 3s 30ms/step - loss: 104.4190 - reconstruction_loss: 103.7018 - kl_loss: 0.7172 - val_loss: 0.0000e+00 - val_reconstruction_loss: 0.0000e+00 - val_kl_loss: 0.0000e+00
Epoch 3/1000
107/107 [==============================] - 3s 30ms/step - loss: 103.2905 - reconstruction_loss: 102.5077 - kl_loss: 0.7828 - val_loss: 0.0000e+00 - val_reconstruction_loss: 0.0000e+00 - val_kl_loss: 0.0000e+00
Epoch 4/1000
107/107 [==============================] - 3s 31ms/step - loss: 101.7333 - reconstruction_loss: 100.8803 - kl_loss: 0.8530 - val_loss: 0.0000e+00 - val_reconstruction_loss: 0.0000e+00 - val_kl_loss: 0.0000e+00

示例数据集和完整脚本可在此处找到

tensorflow
  • 1 个回答
  • 13 Views
Martin Hope
ryan1
Asked: 2024-08-05 17:24:25 +0800 CST

如何保存 TensorFlow 模型并在不同的文件中使用它?

  • 4

我想保存我训练的模型并将其加载到不同的文件中。

我尝试过使用 model.save(my_model.keras) ,但当我将其加载到其他文件中或运行时断开连接后加载它时(Colab 笔记本),它不起作用。有人可以建议其他方法或解释我做错了什么吗?

tensorflow
  • 1 个回答
  • 14 Views
Martin Hope
gebbissimo
Asked: 2024-08-01 16:21:56 +0800 CST

pip 如何/为什么可以安装 CUDA 驱动程序?

  • 6

如今,使用 pip 安装 pytorch 或 tensorflow 也会安装 CUDA 驱动程序,例如参见https://www.tensorflow.org/install/pip

从什么时候开始/怎么可能呢?长期以来,我的理解是 pip 只能安装 python 包,而 conda 最重要的好处之一是它还可以安装其他东西。

tensorflow
  • 1 个回答
  • 35 Views
Martin Hope
Paulo Henrique PH
Asked: 2024-05-29 12:32:01 +0800 CST

YoloV8 结果中没有“box”、“max”属性

  • 5

我训练了一个 YOLOV8 模型来识别十字路口中的物体(即汽车、道路等)。它工作正常,我可以将输出作为图像,并分割感兴趣的对象。

然而,我需要做的是捕获原始几何图形(多边形),以便稍后将它们保存在 txt 文件中。

我尝试了在文档(https://docs.ultralytics.com/modes/predict/#key-features-of-predict-mode)中找到的内容,但是返回的对象与文档所述不同。

事实上,结果是张量流数字的列表:

在此输入图像描述

这是我的代码:

import argparse
import cv2
import numpy as np
from pathlib import Path
from ultralytics.yolo.engine.model import YOLO    
    
# Parse command line arguments
parser = argparse.ArgumentParser()
parser.add_argument('--source', type=str, required=True, help='Source image directory or file')
parser.add_argument('--output', type=str, default='output', help='Output directory')
args = parser.parse_args()

# Create output directory if it doesn't exist
Path(args.output).mkdir(parents=True, exist_ok=True)

# Model path
model_path = r'C:\\_Projects\\best_100img.pt'

# Load your model directly
model = YOLO(model_path)
model.fuse()

# Load image(s)
if Path(args.source).is_dir():
    image_paths = list(Path(args.source).rglob('*.tiff'))
else:
    image_paths = [args.source]

# Process each image
for image_path in image_paths:
    img = cv2.imread(str(image_path))
    if img is None:
        continue

    # Perform inference
    predictions = model.predict(image_path, save=True, save_txt=True)
    
print("Processing complete.")

问题是:返回对象(预测变量)没有框、掩码、关键点等。

我想我的问题是:

  • 为什么结果与文档如此不同?
  • 有转换步骤吗?
tensorflow
  • 1 个回答
  • 34 Views
Martin Hope
Kun.tito
Asked: 2024-05-21 17:23:50 +0800 CST

将 tf.keras.metrics.Precision 添加到 TensorFlow 中的模型指标时出现 ValueError

  • 5

我正在尝试使用 MobileNet 在自定义数据集上应用迁移学习。我的代码工作正常,直到我将 tf.keras.metrics.Precision(name=" precision") 添加到模型的指标中。添加此指标后,我在 model.fit 期间遇到以下错误:

update_confusion_matrix_variables y_pred.shape.assert_is_compatible_with(y_true.shape) ValueError: Shapes (None, 4) and (None, 1) are incompatible

相关代码块:

import tensorflow as tf
from tensorflow.keras.utils import image_dataset_from_directory as get_dataset

img_size = (224, 224)
preprocessing_layer = tf.keras.applications.mobilenet.preprocess_input
img_shape = img_size + (3,)

base_model = tf.keras.applications.MobileNet(
    input_shape=img_shape,
    include_top=False,
    weights='imagenet',
)

batch_size = 32
train_set = get_dataset(
    'some path',
    shuffle=True,
    batch_size=batch_size,
    image_size=img_size,
)

class_names = train_set.class_names
num_classes = len(class_names)

base_model.trainable = False
global_average_layer = tf.keras.layers.GlobalAveragePooling2D()

inputs = tf.keras.Input(shape=img_shape)
k = preprocessing_layer(inputs)
k = base_model(k, training=False)
k = global_average_layer(k)
k = tf.keras.layers.Dropout(0.2)(k)

prediction_layer = tf.keras.layers.Dense(
    num_classes,
    activation="softmax"
)
outputs = prediction_layer(k)

model = tf.keras.Model(inputs, outputs)

model.compile(
    optimizer=tf.keras.optimizers.Adam(learning_rate=0.0001),
    loss=tf.keras.losses.SparseCategoricalCrossentropy(),
    metrics=[
        tf.keras.metrics.SparseCategoricalAccuracy(name='accuracy'),
        tf.keras.metrics.Precision(name="precision"),
    ]
)

AUTOTUNE = tf.data.AUTOTUNE

train_set = train_set.prefetch(buffer_size=AUTOTUNE)

epochs = 1
history = model.fit(
    train_set,
    epochs=epochs,
)

数据集被组织成子目录,其中每个子目录名称都是类标签。有四个类别标签。

由于模型在没有度量的情况下进行训练,因此数据集加载和预处理似乎工作正常tf.keras.metrics.Precision。

当添加精度指标时,这个问题尤其会出现。

epochs有意设置1为用于实验目的。

tensorflow
  • 1 个回答
  • 15 Views
Martin Hope
Prabal B
Asked: 2024-05-08 00:45:38 +0800 CST

model.fit 对使用 tf.data.experimental.make_csv_dataset 创建的张量流数据集给出错误

  • 5

我是张量流新手。我正在尝试从 CSV 文件读取值并将其加载为张量流数据集。但是,当我尝试运行 model.fit 时,它给出以下错误 - 输入“input_39”缺少数据。您传递了一个带有键 ['Age', 'Number', 'Start'] 的数据字典。需要以下键:['input_39']

这是我的代码-

import numpy as np
import pandas as pd
import tensorflow as tf

input_file='kyphosis.csv'

all_dataset = tf.data.experimental.make_csv_dataset(input_file, batch_size=1,label_name="Kyphosis",num_epochs=1)

model=tf.keras.models.Sequential()
model.add(tf.keras.layers.Input(3))
model.add(tf.keras.layers.Dense(10))
model.add(tf.keras.layers.Dense(1,activation='sigmoid'))

model.compile(optimizer='adam',loss='binary_crossentropy',run_eagerly=True)

model.fit(all_dataset,epochs=10)

请让我知道我在这里做错了什么。张量流版本是2.11.0。

我尝试使用 tf.data.Dataset.from_tensor_slices 但遇到相同的错误 -

df=pd.read_csv('kyphosis.csv')
X=df.drop('Kyphosis',axis=1)
y=df['Kyphosis']

all_dataset=tf.data.Dataset.from_tensor_slices((X.to_dict(orient='list'),y))
all_dataset = all_dataset.batch(1)

model=tf.keras.models.Sequential()
model.add(tf.keras.layers.Input(3))
model.add(tf.keras.layers.Dense(10))
model.add(tf.keras.layers.Dense(1,activation='sigmoid'))

model.compile(optimizer='adam',loss='binary_crossentropy')
model.fit(all_dataset,epochs=3)

错误- ValueError:输入“input_41”缺少数据。您传递了一个带有键 ['Age', 'Number', 'Start'] 的数据字典。需要以下键:['input_41']

tensorflow
  • 1 个回答
  • 17 Views
Martin Hope
PTQuoc
Asked: 2024-03-31 06:00:01 +0800 CST

无法安装tensorflow版本2.3.0(找不到发行版)

  • 5

我正在学习深度学习课程,那里的张量流是2.3.0

这是我尝试时的错误pip install tensorflow==2.3.0

“错误:找不到满足tensorflow==2.3.0要求的版本(来自版本:2.5.0、2.5.1、2.5.2、2.5.3、2.6.0rc0、2.6.0rc1、2.6.0rc2, 2.6.0、2.6.1、2.6.2、2.6.3、2.6.4、2.6.5、2.7.0rc0、2.7.0rc1、2.7.0、2.7.1、2.7.2、2.7.3、2.7。 4、2.8.0rc0、2.8.0rc1、2.8.0、2.8.1、2.8.2、2.8.3、2.8.4、2.9.0rc0、2.9.0rc1、2.9.0rc2、2.9.0、2.9.1、 2.9.2、2.9.3、2.10.0rc0、2.10.0rc1、2.10.0rc2、2.10.0rc3、2.10.0、2.10.1、2.11.0rc0、2.11.0rc1、2.11.0rc2、2.11.0、2.11。 1、2.12.0rc0、2.12.0rc1、2.12.0、2.12.1、2.13.0rc0、2.13.0rc1、2.13.0rc2、2.13.0、2.13.1、2.14.0rc0、2.14.0rc1、2.14.0、 2.14.1、2.15.0rc0、2.15.0rc1、2.15.0、2.15.1、2.16.0rc0、2.16.1)错误:找不到tensorflow==2.3.0的匹配分布”

我有两个问题:

  1. 为什么 2.3.0 的发行版不再可用?
  2. 既然如此,我们如何安装2.3.0呢?

谢谢

tensorflow
  • 1 个回答
  • 23 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve