在tensorflow.keras 的官方文档中,
验证数据可以是: Numpy 数组的元组 (x_val, y_val) 或 Numpy 数组数据集的张量元组 (x_val, y_val, val_sample_weights) 对于前两种情况,必须提供 batch_size。对于最后一种情况,可以提供validation_steps。
它没有提到生成器是否可以充当验证数据。所以我想知道validation_data 是否可以是一个数据生成器?像下面的代码:
net.fit_generator(train_it.generator(), epoch_iterations * batch_size, nb_epoch=nb_epoch, verbose=1,
validation_data=val_it.generator(), nb_val_samples=3,
callbacks=[checker, tb, stopper, saver])
Run Code Online (Sandbox Code Playgroud)
更新:在keras的官方文档中,内容相同,只是增加了一句:
- 数据集或数据集迭代器
考虑到
dataset 对于前两种情况,必须提供batch_size。对于最后一种情况,可以提供validation_steps。
我认为应该有3种情况。Keras 的文档是正确的。所以我会在 tensorflow.keras 中发布一个问题来更新文档。
我创建了自己的 python 包jjnsegutils,并将其上传到 Pypi 网站。但是我成功安装后pip install jjnsegutils,仍然无法导入。错误显示:ModuleNotFoundError: No module named 'jjnsegutils'。
整个过程的详细信息如下。
\n我的包的结构是:
\njjnsequtils\n\xe2\x94\x9c\xe2\x94\x80 __init__.py\n\xe2\x94\x9c\xe2\x94\x80 myutil\n \xe2\x94\x9c\xe2\x94\x80 __init__.py\n \xe2\x94\x9c\xe2\x94\x80 myutil.py\n\xe2\x94\x9c\xe2\x94\x80 LICENSE\n\xe2\x94\x9c\xe2\x94\x80 README.md\n\xe2\x94\x9c\xe2\x94\x80 setup.py\n\nRun Code Online (Sandbox Code Playgroud)\n两个__init__.py文件都是空的。
在我的setup.py:
import setuptools\n\nwith open("README.md", "r") as fh:\n long_description = fh.read()\n\nsetuptools.setup(\n name="jjnsegutils", # Replace with your own username\n version="0.0.10",\n author="Jingnan",\n author_email="jiajingnan2222@gmail.com",\n description="A package of common utilities for Medical images segmentation and evaluation.",\n long_description=long_description,\n long_description_content_type="text/markdown",\n url="https://github.com/Ordgod/jjnsegutils",\n packages=setuptools.find_packages(),\n classifiers=[\n "Programming …Run Code Online (Sandbox Code Playgroud) 当我使用批量标准化但设置时会发生什么batch_size = 1?
因为我使用 3D 医学图像作为训练数据集,由于 GPU 限制,batch size 只能设置为 1。通常,我知道,当 时batch_size = 1,方差将为 0。并且(x-mean)/variance会因除以0 而导致错误。
但是为什么我设置的时候没有出现错误batch_size = 1呢?为什么我的网络训练得和我预期的一样好?有人能解释一下吗?
有人认为:
ZeroDivisionError由于两种情况,可能不会遇到 。首先,异常在trycatch 块中被捕获。其次,1e-19在方差项中添加一个小的有理数 ( ),使其永远不会为零。
但也有人不同意。他们说:
您应该计算批次图像中所有像素的均值和标准差。(所以即使
batch_size = 1,batch中仍然有很多像素。所以batch_size=1仍然可以工作的原因不是因为1e-19)
我查过Pytorch的源码,从代码上我觉得后一种是对的。
有人有不同意见吗???