- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当尝试拟合 Keras 模型时,在 tensorflow.keras
API 中使用 tf.Dataset
诱导迭代器编写,模型提示 steps_per_epoch
参数,即使我已将其设置为具体值。
下面是我的模型类
import tensorflow as tf
import numpy as np
from typing import Union, List
from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping
from tensorflow.keras import layers
from tftools import TFTools
class TestServe():
def __init__(self, tfrecords: Union[List[tf.train.Example], tf.train.Example], batch_size: int = 10, input_shape: tuple = (64, 23)) -> None:
self.tfrecords = tfrecords
self.batch_size = batch_size
self.input_shape = input_shape
def get_model(self):
ins = layers.Input(shape=(64, 23))
l = layers.Reshape((*self.input_shape, 1))(ins)
l = layers.Conv2D(8, (30, 23), padding='same', activation='relu')(l)
l = layers.MaxPool2D((4, 5), strides=(4, 5))(l)
l = layers.Conv2D(16, (3, 3), padding='same', activation='relu')(l)
l = layers.Conv2D(32, (3, 3), padding='same', activation='relu')(l)
l = layers.MaxPool2D((2, 2), strides=(2, 2))(l)
l = layers.Flatten()(l)
out = layers.Dense(1, activation='softmax')(l)
return tf.keras.models.Model(ins, out)
def train(self):
# Create Dataset
dataset = TFTools.create_dataset(self.tfrecords)
dataset = dataset.repeat(6).batch(self.batch_size)
val_iterator = dataset.take(300).make_one_shot_iterator()
train_iterator = dataset.skip(300).make_one_shot_iterator()
model = self.get_model()
model.summary()
model.compile(optimizer='rmsprop',
loss='binary_crossentropy', metrics=['accuracy'])
model.fit(train_iterator, validation_data=val_iterator,
epochs=10, verbose=1, steps_per_epoch=20)
def predict(self, X: np.array) -> np.array:
pass
ts = TestServe(['./ok.tfrecord', './nok.tfrecord'])
ts.train()
但是我一开始训练,在第一批完成之前,我从 tensorflow 得到一个异常
2019-06-13 14:22:25.393398: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 1995445000 Hz
2019-06-13 14:22:25.393681: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x2f7d120 executing computations on platform Host. Devices:
2019-06-13 14:22:25.393708: I tensorflow/compiler/xla/service/service.cc:158] StreamExecutor device (0): <undefined>, <undefined>
Epoch 1/2
19/20 [===========================>..] - ETA: 0s - loss: 1.1921e-07 - acc: 1.0000Traceback (most recent call last):
File "TestServe.py", line 62, in <module>
ts.train()
File "TestServe.py", line 56, in train
epochs=2, verbose=1, callbacks=callbacks, steps_per_epoch=20) #The steps_per_epoch is typically samples_per_epoch / batch_size
File "/home/josef/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 880, in fit
validation_steps=validation_steps)
File "/home/josef/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_arrays.py", line 364, in model_iteration
validation_in_fit=True)
File "/home/josef/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_arrays.py", line 202, in model_iteration
steps_per_epoch)
File "/home/josef/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_arrays.py", line 76, in _get_num_samples_or_steps
'steps_per_epoch')
File "/home/josef/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_utils.py", line 230, in check_num_samples
if check_steps_argument(ins, steps, steps_name):
File "/home/josef/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_utils.py", line 960, in check_steps_argument
input_type=input_type_str, steps_name=steps_name))
ValueError: When using data tensors as input to a model, you should specify the `steps_per_epoch` argument.
原始数据集包含大约 1500 个样本,但我想将多个 tfrecord 文件连接到 TFRecordDataset,所以我没有关于长度的信息。
有人见过类似的东西吗?我不知道去哪里寻求帮助,因为 tf.keras
API 相对较新。 create_dataset
函数只返回用正确的解析函数映射的数据集。
最佳答案
找到解决方案。
不仅有steps_per_epoch
还有validation_steps
参数,你也必须指定。
关于python - TF keras API with TF数据集问题-steps_per_epoch参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56580538/
我正在阅读《Python 中的深度学习》一书,想更多地了解定义 steps_per_epoch 和 batch size 时会发生什么。他们使用的示例包含 4000 张狗和猫的图像,其中 2000 张
我正在尝试使用这个 Google 的示例,但使用我自己的数据集: https://github.com/tensorflow/examples/blob/master/tensorflow_examp
我是深度学习的新手。我有一个基本的疑问。这对你来说可能听起来很愚蠢。 我正在研究从卫星图像中提取道路。我只有 1080 个样本图像。这就是我应用数据增强的原因。 以下是数据增强的代码 aug = Im
当我训练我的自动驾驶汽车模型时,它在第一个时期给我错误。尽管当我减小 batch_size 时它工作正常。但这并没有给我想要的准确性。 我正在 Google Collab 中训练我的模型。 tenso
当我训练我的自动驾驶汽车模型时,它在第一个时期给我错误。尽管当我减小 batch_size 时它工作正常。但这并没有给我想要的准确性。 我正在 Google Collab 中训练我的模型。 tenso
我注意到 fit_generator ,steps_per_epoch 参数通常分配total_samples//batch_size . 但是,如果我的 total_samples 是 1000 并
我被这个问题困扰了好几天... 我的问题是,为什么训练时间之间有如此大的差异,以至于我将生成器的batch_size设置为“1”和“20”。 如果将 batch_size 设置为 1 ,则 1个时期的
当我在 model.fit(..) 方法中指定 steps_per_epoch 参数时,我注意到训练模型速度大幅下降。当我将 steps_per_epoch 指定为 None(或不使用它)时,epoc
在 Keras 文档中 - steps_per_epoch: 在声明一个纪元结束并开始下一个纪元之前从生成器产生的总步数(样本批处理)。它通常应该等于数据集的唯一样本数除以批量大小。 我有 3000
我目前正在将 tf 代码转换为 tfrecords 和 tf 数据集。在我的应用程序中,经过训练的模型通常在看到所有训练样本之前很久就收敛了。因此,我通常将数据生成器长度自己设置为我想要适应一个时期的
我注意到对于fit_generator,通常会为steps_per_epoch参数分配total_samples//batch_size,在这里可以创建一个生成器/使用 ImageDataGenera
我正在为图像分类问题训练 2 个不同的 CNN(自定义学习和迁移学习)。我对两种型号使用相同的发电机。该数据集包含 5 个类别的 5000 个样本,但不平衡。 这是我正在使用的自定义模型。 def _
注意:我已经解决了我的问题,但我发布这个问题是为了防止其他人也有这个问题,而且我不明白我是如何解决它的。 我正在使用 Tensorflow 后端在 Keras 中构建命名实体分类器(序列标记模型)。当
我已经在 Keras 中训练了多个模型。我的训练集中有 39、592 个样本,验证集中有 9、899 个样本。我使用的批量大小为 2。 当我检查我的代码时,我突然想到我的生成器可能丢失了一些批处理的数
我是在项目中使用 keras 的新手。我一直在我的模型中使用generator。 我真的很困惑我应该输入什么值 1) In fit_generator : steps_per_epoch & vali
我在 tensorflow 中运行这段代码:https://github.com/empathy87/nn-grocery-shelves/blob/master/Step%202%20-%20Bra
我的代码如下: model.fit_generator(generator=(train_image_list, train_mask_list),epochs=1000,shuffle=True)
当我使用 batch_size 和 steps_per_epoch 参数运行 model.fit 时,我收到以下错误: ValueError: If steps_per_epoch is set, t
我使用的是包含我的训练数据的 tf.data 数据集,其中包含(比方说)10 万张图像。我还使用了包含我的验证集的 tf.data 数据集。由于所有 100k 图像的一个纪元需要很长时间(在我的例子中
我在 Jupyter Notebook 中使用 Keras 2.0.8 和 Python 3 内核。我的后端是 TensorFlow 1.3,我在 Mac 上开发。 每当我使用 fit_generat
我是一名优秀的程序员,十分优秀!