- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在 Eager Execution 中运行基本的 CNN keras 模型,但 Tensorflow 拒绝将模型视为 Eager。我最初在稳定的 1.13 分支(最新)中尝试过此操作,确保启用急切执行但没有结果。我升级到 2.0(最新)但还是没有。
class CNN2(tf.keras.Model):
def __init__(self, num_classes=7):
super(CNN2, self).__init__()
self.cnn1 = tf.keras.layers.Conv2D(32, (5,5), padding='same', strides=(2, 2),
kernel_initializer='he_normal')
self.bn1 = tf.keras.layers.BatchNormalization()
self.cnn2 = tf.keras.layers.Conv2D(64, (5,5), padding='same', strides=(2, 2),
kernel_initializer='he_normal')
self.cnn3 = tf.keras.layers.Conv2D(128, (5,5), padding='same', strides=(2, 2),
kernel_initializer='he_normal')
self.bn2 = tf.keras.layers.BatchNormalization()
self.pool = tf.keras.layers.MaxPooling2D((2,2))
self.dnn1 = tf.keras.layers.Dense(128)
self.dropout1 = tf.keras.layers.Dropout(0.45)
self.flatten = tf.keras.layers.Flatten()
self.dnn2 = tf.keras.layers.Dense(512)
self.dnn3 = tf.keras.layers.Dense(256)
self.classifier = tf.keras.layers.Dense(num_classes)
def simpleLoop(self, inputs, x):
#x_Numpy = x.numpy(),
for i, input in inputs:
print("{0} - {1}".format(i,len(input)))
def call(self, inputs, training=None, mask=None):
print(tf.executing_eagerly())
x = tf.nn.leaky_relu(self.cnn1(inputs))
x = self.bn1(x)
x = self.pool(x)
x = tf.nn.leaky_relu(x)
x = tf.nn.leaky_relu(self.bn2(self.cnn2(x)))
x = self.pool(x)
x = self.dropout1(tf.nn.leaky_relu(self.cnn3(x)))
x = self.flatten(x)
self.simpleLoop(inputs, x)
x = self.dropout1(self.dnn1(x))
x = self.dropout1(self.dnn2(x))
x = self.dropout1(self.dnn3(x))
output = self.classifier(x)
#with tf.device('/cpu:0'):
output = tf.nn.softmax(output)
return output
batch_size = 50
epochs = 150
num_classes = 7
print(tf.executing_eagerly())
print(tf.__version__)
>>True
>>2.0.0-alpha0
modelE = CNN2(num_classes)
modelE.run_eagerly = True
print(modelE.run_eagerly)
#model = CNN2(num_classes)
modelE.compile(optimizer=tf.optimizers.Adam(0.00008), loss='categorical_crossentropy',
metrics=['accuracy'], run_eagerly=True)
# TF Keras tries to use entire dataset to determine shape without this step when using .fit()
# Fix = Use exactly one sample from the provided input dataset to determine input/output shape/s for the model
dummy_x = tf.zeros((1, size, size, 1))
modelE._set_inputs(dummy_x)
# Train
hist = modelE.fit(x_train, y_train, batch_size=batch_size, epochs=epochs,
validation_data=(x_test, y_test), verbose=1)
# Evaluate on test set
scores = modelE.evaluate(x_test, y_test, batch_size, verbose=1)
这会导致错误AttributeError: 'Tensor' 对象没有属性 'numpy'
当我删除有问题的行 x.numpy()
时,我得到了这个错误TypeError:Tensor 对象仅在启用急切执行时才可迭代。要迭代此张量,请使用 tf.map_fn。
它还会为位于模型的 def call()
方法中的 print(tf.executing_eagerly())
打印 False。
如何强制它进入急切模式而不是图表?我再次在最新的 1.13 和 2.0 中尝试了这个。这是错误吗?
最佳答案
在 tensorflow==2.0.0
中找到适合我的解决方案花了一段时间,所以我想在这里分享它,以防它也能帮助其他人:
model.compile(run_eagerly=True)
如果这不起作用,您可以尝试在模型编译后强制执行:
model.compile()
model.run_eagerly = True
关于python - 热修复 Tensorflow 模型未使用 .fit() 在 Eager 模式下运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56062017/
显然,可以实现 Haskell,使其在不改变语言语义的情况下急切地求值。如果这是真的,如何处理无限数据结构? http://csg.csail.mit.edu/pubs/haskell.html Th
有没有什么方法可以像@ManagedBean(eager=true ) 来自 javax.faces 包? @Named @ApplicationScoped public Mail() { ...
使用@ApplicationScoped @Named @Eager,我的@EJB注入(inject)的@Stateless bean未正确实例化并评估为空。 我有一个@ApplicationScop
我必须删除两个分隔符之间的字符串,即 从“123XabcX321”我想要“123321”。 对于一个简单的案例,我很好: $_=<>; s/X(.*)X//; print; 但是,如果像“123Xab
我有一个对象层次结构,订单,联系人,地址: public class Order { public virtual Contact BillingContact { get; set; }
Eager 模式仅支持 TF native 优化器我在以下尝试过的每个优化器中都会遇到此错误: def create_model(): model = tf.keras.models.Sequ
我有这样的数据设计:交易属于授权,而授权又属于客户。或者用结构体表示: type Transaction struct { shared.Transaction // transaction
我想在 Scheme 中做一个懒惰的列表。这是我到目前为止。 ;; Constructor for Pairs (define (cons-stream a b) (cons a (λ() b))
今天是个好日子 我是 Laravel 的新手,目前正在用它构建我的第一个简单的新闻应用程序 我有一个简单的查询,使用 laravel 的预先加载功能 但是在这个急切的加载功能中,我想根据某些条件获取某
我正在制作一个动态表单,让用户使用 vue.js 自动生成带有游戏统计信息的图像,并使用 Keen-ui。我是 vue.js 的新手,过去两周开始学习它。 现在,我在使用 eager-ui 进行选择下
我 fork 了 eager/dashboards github 存储库,并尝试创建一个 Dockerfile 以在 Docker 容器中运行仪表板。 我的 fork :https://github.
我的实体: @Entity @NoArgsConstructor public class Company { @Id @Getter @GeneratedValue(strategy =
在我的实体中,我必须使用 fetch = FetchType.EAGER 因为我有一个错误: nested exception is org.hibernate.LazyInitializationE
我在 Java 中使用 play 2.0.4。我正在尝试从 play 提供的内存数据库中保存和检索值(Ebean 是底层 JPA 实现)。下面是一些示例代码: @NoobDisclaimer ("I'
在 Pro .NET Performance - Optimize Your C# Applications 的第 96 页上,它谈到了 GC 急切根收集: For each local variab
我无法从数据库加载对象及其相对映射对象。可能我的“ map 系统”是错误的。 在数据库中保存对象(及其相对映射对象)时,一切正常,因此对象似乎已正确映射。 Utente是我的“主”对象 publ
我需要使用急切查询在 Laravel 中执行子查询,但结果始终为空。 查询: $project = Log::where('project_id', $id)->with(['log_occurenc
我有这个程序: var planetStream = require('../../'); var app = require('http').createServer(handler); var i
我需要与FetchType.EAGER(下面的示例)建立关系,但我有异常(exception)。如果我将 FetchType.EAGER 更改为 FetchType.LAZY 一切正常,但我确实需要
我正在使用 EF6 并尝试急切获取对象的整个结构。问题是我正在使用继承。 假设我有这个类(class)。 数据库上下文 DbSet A { get; set; } 示例类 public class A
我是一名优秀的程序员,十分优秀!