TF2实现DenseNet分类CIFAR10遇到的各种问题
tf.keras.layers.Input()输入层解析
layers.Input(
shape=None,
batch_size=None,
name=None,
dtype=None,
sparse=False,
tensor=None,
ragged=False,
**kwargs,
)
作用: 用于构建网络的第一层——输入层,该层会告诉网络我们的输入的尺寸是什么,这一点很重要。例如使Model(input=x,output=y)构建网络,这种构建方式很常见,用途很广。 参数含义: shape:输入的形状,tuple类型。不含batch_size;tuple的元素可以为None类型数据,表示未知的或者说任意的,一般这里不用None batch_size:声明输入的batch_size大小,一般会在预测时候用,训练时不需要声明,会在fit时声明,即dataset类型数据声明了batch_size name:给layers起个名字,在整个网络中不能出现重名。如果name=None,则系统会自动为该层创建名字。 dtype:数据类型,在大多数时候,我们需要的数据类型为tf.float32,因为在精度满足的情况下,float32运算更快。 参考博客
ZeroPadding2D
keras.layers.ZeroPadding2D(padding=(1, 1), data_format=None)
这里就表示上下都补充1,所以行数就+2;左右都补充1,所以列数就+2。
当输入为图像,即2D输入时的零填充层,可以在图像张量的顶部,底部,左侧,右侧添加0表示的行和列
参数:
- padding: 整数,或 2 个整数的元组,或 2 个整数的 2 个元组。
- 如果为整数:将对宽度和高度运用相同的对称填充。
- 如果为 2 个整数的元组:
- 如果为整数:: 解释为高度和高度的 2 个不同的对称裁剪值:(symmetric_height_pad,symmetric_width_pad)。
- 如果为 2 个整数的 2 个元组: 解释为((top_pad, bottom_pad), (left_pad, right_pad))。
- data_format: 字符串, channels_last (默认) 或 channels_first 之一, 表示输入中维度的顺序。channels_last 对应输入尺寸为 (batch, height, width, channels), channels_first 对应输入尺寸为 (batch, channels, height, width)。 它默认为从 Keras 配置文件 ~/.keras/keras.json 中 找到的 image_data_format 值。 如果你从未设置它,将使用 “channels_last”。
参考博客
keras.layers.convolutional.Conv2D
keras.layers.convolutional.Conv2D(filters,
kernel_size,
strides(1,1),
padding='valid',
data_format=None,
dilation_rate=(1,1),
activation=None,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None)
解决(‘You must install pydot (pip install pydot ) and install graphviz (see…) ‘, ‘for plot_model…
tf.keras.utils.plot_model(resnet50)
报错:('Failed to import pydot. You must pip install pydot and install graphviz (https://graphviz.gitlab.io/download/), ', ‘for pydotprint to work.’) Solution
pip install pydot
pip install graphviz
pip install pydotplus
有人说不能用pip安装graphviz,之后我就一直使用conda安装:conda install graphviz
参考博客
|