小编sri*_*tel的帖子

不支持 TensorFlow 2.0 的 Keras。我们建议使用 `tf.keras`,或者降级到 TensorFlow 1.14

我有关于(不支持 TensorFlow 2.0 的 Keras。我们建议使用tf.keras,或者降级到 TensorFlow 1.14。)任何建议的错误。

谢谢

import keras
#For building the Neural Network layer by layer
from keras.models import Sequential
#To randomly initialize the weights to small numbers close to 0(But not 0)
from keras.layers import Dense

classifier=tf.keras.Sequential()

classifier.add(Dense(output_dim = 6, init = 'uniform', activation = 'relu', input_dim = 11))




RuntimeError: It looks like you are trying to use a version of multi-backend Keras that does not support TensorFlow 2.0. We recommend using `tf.keras`, or alternatively, …
Run Code Online (Sandbox Code Playgroud)

python neural-network keras tensorflow tf.keras

13
推荐指数
2
解决办法
2万
查看次数

将生成器与 tf.data 一起使用的最可扩展方式?tf.data 指南说`from_generator` 的可扩展性有限

tf.data 有一个from_generator初始值设定项,它似乎不可扩展。来自官方指南

注意:虽然这是一种方便的方法,但它的可移植性和可扩展性有限。它必须在创建生成器的同一个 python 进程中运行,并且仍然受 Python GIL 的约束。

https://www.tensorflow.org/guide/data#sumption_python_generators

并在官方文档中

注意:Dataset.from_generator() 的当前实现使用 tf.numpy_function 并继承相同的约束。特别是,它需要将与 Dataset 和 Iterator 相关的操作放置在与调用 Dataset.from_generator() 的 Python 程序相同的进程中的设备上。生成器的主体不会在 GraphDef 中序列化,如果您需要序列化模型并在不同的环境中恢复它,则不应使用此方法。

注意:如果生成器依赖于可变全局变量或其他外部状态,请注意运行时可能会多次调用生成器(以支持重复数据集)以及在调用 Dataset.from_generator() 和产生生成器的第一个元素。改变全局变量或外部状态可能会导致未定义的行为,我们建议您在调用 Dataset.from_generator() 之前在生成器中显式缓存任何外部状态。

https://www.tensorflow.org/api_docs/python/tf/data/Dataset#from_generator

然而,生成器是训练非常大量数据的一种相当常见的方法。所以必须有一些替代的最佳实践,但官方的 Tensorflow 数据指南没有提供任何信息。

python generator keras tensorflow tf.keras

12
推荐指数
1
解决办法
314
查看次数

对象可枚举但不可索引?

问题总结及疑问

我正在尝试查看可以枚举但不能索引的对象中的一些数据。我对 python 还是新手,但我不明白这是怎么可能的。

如果可以枚举它,为什么不能通过与枚举相同的方式访问索引?如果没有,有没有办法单独访问这些项目?

实际例子

import tensorflow_datasets as tfds

train_validation_split = tfds.Split.TRAIN.subsplit([6, 4])

(train_data, validation_data), test_data = tfds.load(
    name="imdb_reviews", 
    split=(train_validation_split, tfds.Split.TEST),
    as_supervised=True)

Run Code Online (Sandbox Code Playgroud)

选择数据集的一个子集

foo = train_data.take(5)
Run Code Online (Sandbox Code Playgroud)

可以foo用 enumerate迭代:

[In] for i, x in enumerate(foo):
    print(i)
Run Code Online (Sandbox Code Playgroud)

产生预期的输出:

0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试对其进行索引时,出现foo[0]此错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-44-2acbea6d9862> in <module>
----> 1 foo[0]

TypeError: 'TakeDataset' object does not support indexing
Run Code Online (Sandbox Code Playgroud)

python neural-network tensorflow kaggle

10
推荐指数
1
解决办法
1061
查看次数

如何在 Tensorflow 2.0 数据集中动态更改批量大小?

在 TensorFlow 1.X 中,您可以使用占位符动态更改批次大小。例如

dataset.batch(batch_size=tf.placeholder())
查看完整示例

你如何在 TensorFlow 2.0 中做到这一点?

我已经尝试了以下但它不起作用。

import numpy as np
import tensorflow as tf


def new_gen_function():
    for i in range(100):
        yield np.ones(2).astype(np.float32)


batch_size = tf.Variable(5, trainable=False, dtype=tf.int64)
train_ds = tf.data.Dataset.from_generator(new_gen_function, output_types=(tf.float32)).batch(
    batch_size=batch_size)

for data in train_ds:
    print(data.shape[0])
    batch_size.assign(10)
    print(batch_size)
Run Code Online (Sandbox Code Playgroud)

输出

5
<tf.Variable 'Variable:0' shape=() dtype=int64, numpy=10>
5
<tf.Variable 'Variable:0' shape=() dtype=int64, numpy=10>
5
<tf.Variable 'Variable:0' shape=() dtype=int64, numpy=10>
5
...
...
Run Code Online (Sandbox Code Playgroud)

我正在使用 Gradient 磁带使用自定义训练循环训练模型。我怎样才能做到这一点?

python tensorflow tensorflow-datasets tensorflow2.0

9
推荐指数
1
解决办法
5187
查看次数

Android MLKit - 执行 Firebase ML 任务时发生内部错误

嗨,我有一个我在 android 应用程序中使用的自定义模型,但是当我尝试运行它时,会抛出 MLkitExceptions,所述错误的日志输出如下:

Internal error has occurred when executing Firebase ML tasks
Run Code Online (Sandbox Code Playgroud)

我的应用程序的 Java 代码如下所示:

Internal error has occurred when executing Firebase ML tasks
Run Code Online (Sandbox Code Playgroud)

每当我尝试运行 FirebaseModelInterpreter 时,我都会收到该错误,而没有其他任何错误。

输入张量和输出张量的形状分别如下:

[1 3]
<class 'numpy.float32'>
[ 1  1 34]
<class 'numpy.int64'>
Run Code Online (Sandbox Code Playgroud)

任何有关此问题的帮助或见解将不胜感激。

android machine-learning firebase tensorflow firebase-mlkit

8
推荐指数
2
解决办法
2815
查看次数

Tensorflow - model.fit 中的值错误 - 如何修复

我正在尝试使用 MNIST 数据集训练深度神经网络。

BATCH_SIZE = 100
train_data = train_data.batch(BATCH_SIZE)
validation_data = validation_data.batch(num_validation_samples)
test_data = scaled_test_data.batch(num_test_samples)

validation_inputs, validation_targets = next(iter(validation_data))

input_size = 784
output_size = 10
hidden_layer_size = 50

model = tf.keras.Sequential([
                    tf.keras.layers.Flatten(input_shape=(28,28,1)),
                    tf.keras.layers.Dense(hidden_layer_size, activation='relu'),
                    tf.keras.layers.Dense(hidden_layer_size, activation='relu'),
                    tf.keras.layers.Dense(output_size, activation='softmax')                        
                ])

model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

NUM_EPOCHS = 5
model.fit(train_data, epochs=NUM_EPOCHS, validation_data=(validation_inputs,validation_targets))
Run Code Online (Sandbox Code Playgroud)

model.fit 抛出以下错误

-------------------------------------------------------------------------

--
ValueError                                Traceback (most recent call last)
<ipython-input-58-c083185dafc6> in <module>
      1 NUM_EPOCHS = 5
----> 2 model.fit(train_data, epochs=NUM_EPOCHS, validation_data=(validation_inputs,validation_targets))

~/anaconda3/envs/py3-TF2/lib/python3.7/site-packages/tensorflow_core/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, …
Run Code Online (Sandbox Code Playgroud)

machine-learning neural-network python-3.x mnist tensorflow

6
推荐指数
1
解决办法
6万
查看次数

如何在每个时代结束时使用 tf.keras 拟合和评估 tf.data.dataset?

当 x 是tf.data数据集时,(inputs, targets)和 输入的元组是诸如{"fea_1": val_1, "fea_2": val_2…}model.fit函数tensorflow/python/keras/engine/training.py不支持validation_data或 之类的特征的字典validation_split

validation_split当 x 是数据集时不支持。validation_data仅支持 Numpy 数组或张量。

我可以takeor splitdataset to model.fitand model.evaluate,但它不能在每个纪元结束时执行验证。

tf.data.dataset当输入特征是字典时,有没有更好的方法来训练和评估?

keras tensorflow tf.keras

6
推荐指数
1
解决办法
2231
查看次数

Tensorflow 2 + Keras 的知识蒸馏损失

我正在尝试实现一个非常简单的 keras 模型,该模型使用来自另一个模型的知识蒸馏 [1]。粗略地说,我需要更换原来的损失L(y_true, y_pred)L(y_true, y_pred)+L(y_teacher_pred, y_pred)哪里y_teacher_pred是另一个模型的预测。

我试过做

def create_student_model_with_distillation(teacher_model):

  inp = tf.keras.layers.Input(shape=(21,))

  model = tf.keras.models.Sequential()
  model.add(inp)

  model.add(...) 
  model.add(tf.keras.layers.Dense(units=1))

  teacher_pred = teacher_model(inp)

  def my_loss(y_true,y_pred):
      loss = tf.keras.losses.mean_squared_error(y_true, y_pred)
      loss += tf.keras.losses.mean_squared_error(teacher_pred, y_pred)
      return loss

  model.compile(loss=my_loss, optimizer='adam')

  return model
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试调用fit我的模型时,我得到了

TypeError: An op outside of the function building code is being passed
a "Graph" tensor. It is possible to have Graph tensors
leak out of the function building context by including a
tf.init_scope …
Run Code Online (Sandbox Code Playgroud)

python deep-learning tf.keras tensorflow2.0

5
推荐指数
1
解决办法
628
查看次数

在 Tensorflow 和 Pytorch 中联合训练模型

我有两个模型,Tensorflow 2.0 中的模型 A 和 Pytorch 1.3 中的模型 B。模型 A 的输出是 B 的输入。我想端到端地训练这两个模型。

是否可以不将其中一个模型移植到另一个框架?

machine-learning deep-learning tensorflow pytorch tensorflow2.0

5
推荐指数
1
解决办法
177
查看次数

Tensorflow 2.0具体函数structural_input_signature返回值

structured_input_signature在检查tf.ConcreteFunction.

在谷歌文档https://www.tensorflow.org/guide/concrete_function#using_a_concrete_function中返回一个元组。例如

@tf.function
def power(a,b):
  print('Tracing "power"\n')
  return a**b

float_power = power.get_concrete_function(
  a = tf.TensorSpec(shape=[], dtype=tf.float32),
  b = tf.TensorSpec(shape=[], dtype=tf.float32))

print(float_power.structured_input_signature)
print(float_power.structured_outputs)
Run Code Online (Sandbox Code Playgroud)

印刷

Tracing "power"

((TensorSpec(shape=(), dtype=tf.float32, name='a'), TensorSpec(shape=(), dtype=tf.float32, name='b')), {})
Tensor("Identity:0", shape=(), dtype=float32)
Run Code Online (Sandbox Code Playgroud)

然而,当模块被保存和加载时,输出略有不同:

float_power_mod = tf.Module()
float_power_mod.float_power = float_power
tf.saved_model.save(float_power_mod, './float_power_mod')

mod_4 = tf.saved_model.load('./float_power_mod')
float_power_func = mod_4.signatures['serving_default']
print(float_power_func.structured_input_signature)
Run Code Online (Sandbox Code Playgroud)

印刷

((),
 {'a': TensorSpec(shape=(), dtype=tf.float32, name='a'),
  'b': TensorSpec(shape=(), dtype=tf.float32, name='b')})
Run Code Online (Sandbox Code Playgroud)

在 Structured_input_signature 的返回元组中填充元组与字典背后的逻辑是什么?

python tensorflow-serving tensorflow2.0

5
推荐指数
1
解决办法
6916
查看次数