tensorflow.keras.layer介绍

序章

用于记录自己学习 tensorflow ,激励自己一边学习一边分享。
Tensorflow 基础知识讲解 Gitee 地址
Tensorflow 基础知识讲解 Github 地址
tensorflow 地址

Dense(全连接层)

 tf.keras.layers.Dense(units, 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)

参数:
    units: 正整数,输出空间维度。
    activation: 激活函数 (详见 activations)。 若不指定,则不使用激活函数 (即,线性激活: a(x) = x)。
    use_bias: 布尔值,该层是否使用偏置向量。
    kernel_initializer: kernel 权值矩阵的初始化器 (详见 initializers)。
    bias_initializer: 偏置向量的初始化器 (详见 initializers)。
    kernel_regularizer: 运用到 kernel 权值矩阵的正则化函数 (详见 regularizer)。
    bias_regularizer: 运用到偏置向量的的正则化函数 (详见 regularizer)。
    activity_regularizer: 运用到层的输出的正则化函数 (它的 "activation")。 (详见 regularizer)。
    kernel_constraint: 运用到 kernel 权值矩阵的约束函数 (详见 constraints)。
    bias_constraint: 运用到偏置向量的约束函数 (详见 constraints)。

输入
    形如(batch_size, ..., input_dim)的 nD 张量,最常见的情况为(batch_size, input_dim)的 2D 张量
    
输出
    形如(batch_size, ..., units)的 nD 张量,最常见的情况为(batch_size, units)的 2D 张量
# demo
import tensorflow as tf

# 创建一个模型,并且采用 shape= (None, 16) 的输入数组, 输出数组为 shape=(None, 32)。注意在第一层之后,你不需要再指定输入的大小了:
model = tf.keras.models.Sequential()
model.add(tf.keras.Input(shape=(16,)))
model.add(tf.keras.layers.Dense(32, activation='relu'))
model.add(tf.keras.layers.Dense(32))
print(model.output_shape)  # (None, 32)

Conv1D (一维卷积层)

作用:

函数:tf.keras.layers.Conv1D(
        filters, kernel_size, strides=1, padding='valid',
        data_format='channels_last', dilation_rate=1, groups=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, **kwargs
    )

参数: 
    filters:  整数,输出空间的维度(即卷积中输出滤波器的数量)
    kernel_size:  单个整数的整数或元组列表,指定一维卷积窗口的长度
    strides:	一个整数或单个整数的元组列表,指定卷积的步长。指定任何 stride 值 != 1 与指定任何 dilation_rate 值 != 1 不兼容。
    padding:	"valid" 意味着没有填充。 , "same" 导致在输入的左/右或上/下均匀填充零,以使输出具有与输入相同的高度/宽度尺寸。
                "causal" 导致因果(扩张)卷积,例如输出[t] 不依赖于输入[t+1:]。在模型不应违反时间顺序的时间数据建模时很有用。
    data_format:	一个字符串,channels_last(默认)或 channels_first 之一。
    dilation_rate:	一个整数或单个整数的元组/列表,指定用于扩张卷积的扩张率。
                    目前,指定任何 dilation_rate 值 != 1 与指定任何 strides 值 != 1 是不兼容的。
    groups:	 一个正整数,指定输入沿通道轴拆分的组数。每个组分别与 filters / groups filters 进行卷积。
            输出是沿通道轴的所有组结果的串联。输入通道和过滤器都必须可以按组整除。
    activation:	要使用的激活功能。如果您未指定任何内容,则不会应用激活
    use_bias:	bool,层是否使用偏置向量。
    kernel_initializer:	内核权重矩阵的初始化程序(请参阅 keras.initializers)。默认为“glorot_uniform”。
    bias_initializer:	偏置向量的初始化程序。 默认为“zero”。
    kernel_regularizer:	应用于内核权重矩阵的正则化函数
    bias_regularizer:	应用于偏置向量的正则化函数
    activity_regularizer:	正则化函数应用于层的输出 (its "activation")
    kernel_constraint:	应用于核矩阵的约束函数
    bias_constraint:	应用于偏置向量的约束函数

输入shape
    形如(samples,steps,input_dim)的3D张量
    
输出shape
    形如(samples,new_steps,nb_filter)的3D张量,因为有向量填充的原因,steps的值会改变
# demo
import tensorflow as tf

# 输入是 128 个长度的向量,有 10 个时间步长,批量大小为 4
input_shape = (4, 10, 128)
x = tf.random.normal(input_shape)
y = tf.keras.layers.Conv1D(32, 3, activation='relu', input_shape=input_shape[1:])(x)
print(y.shape)  # (4,8,32)

conv2D(二维卷积层)

作用:二维卷积层,即对图像的空域卷积。该层对二维输入进行滑动窗卷积,当使用该层作为第一层时,应提供input_shape参数。
    例如input_shape = (128,128,3)代表128*128的彩色RGB图像

使用方法: 
    tf.keras.layers.Conv2D(
        filters, kernel_size, strides=(1, 1), padding='valid',
        data_format=None, dilation_rate=(1, 1), groups=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, **kwargs
    )

参数:
    filters:卷积核的数目(即输出的维度)
    kernel_size:单个整数或由两个整数构成的list/tuple,卷积核的宽度和长度。
                如为单个整数,则表示在各个空间维度的相同长度。
    strides:单个整数或由两个整数构成的list/tuple,为卷积的步长。如为单个整数,则表示在各个空间维度的相同步长。
            任何不为1的strides均与任何不为1的dilation_rate均不兼容
    padding:补0策略,为“valid”, “same” 。“valid”代表只进行有效的卷积,即对边界数据不处理。
            “same”代表保留边界处的卷积结果,通常会导致输出shape与输入shape相同。
    activation:激活函数,为预定义的激活函数名&#x
### 如何正确导入 `tensorflow.keras` 模块 在 Python 中,为了正确使用 TensorFlow 提供的 Keras API (`tensorflow.keras`),需要遵循官方推荐的方式进行模块导入。以下是关于如何正确导入以及处理常见问题的方法。 #### 正确导入方式 通常情况下,可以通过以下方法来导入 `tensorflow.keras` 及其子模块: ```python import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers, models ``` 上述代码展示了标准的导入路径[^1]。这种方式可以确保兼容最新的 TensorFlow 版本,并减少因路径变化而导致的错误风险。 --- #### 常见问题及解决方案 ##### 1. **AttributeError: module 'tensorflow.python.keras' has no attribute 'Model'** 此错误通常是由于尝试直接访问内部实现路径引起的。建议改用公共接口导入 Model 类型,如下所示: ```python from tensorflow.keras.models import Model ``` 这种做法不仅更简洁,还能避免依赖于可能更改的私有实现细节。 ##### 2. **ImportError: cannot import name ‘adam’ from ‘tensorflow.python.keras.optimizers’** 该问题是由于 TensorFlow 的版本更新导致优化器模块发生了迁移所致。新的优化器应从 `tf.keras.optimizers` 导入,而不是旧版路径中的位置。例如: ```python from tensorflow.keras.optimizers import Adam optimizer = Adam(learning_rate=0.001) ``` 这一步骤解决了因路径变更而引发的导入失败问题[^2]。 ##### 3. **ImportError: cannot import name ‘LayerNormalization’ from ‘tensorflow.keras.layers’** 如果遇到此类错误,则可能是当前使用的 TensorFlow 版本不支持某些特定功能或者存在安装冲突的情况。确认已安装最新稳定版 TensorFlow 后再执行下列操作即可解决问题: ```python from tensorflow.keras.layers import LayerNormalization layer_norm = LayerNormalization() ``` 此外,在升级前需清理环境以移除潜在残留文件[^4]。 ##### 4. **No module named ‘tensorflow.keras.preprocessing.timeseries_dataset_from_array’** 当试图加载时间序列数据集时发生这样的异常提示说明函数已被废弃或移动到了其他地方。替代方案是从更高层次API获取相应工具类实例化对象完成相同任务逻辑表达形式如下所列: ```python from tensorflow.keras.utils import timeseries_dataset_from_array dataset = timeseries_dataset_from_array(data, targets, sequence_length=10) ``` 注意这里调整了原引用表述使之更加清晰明了便于理解应用过程[^5]。 --- ### 总结 以上介绍了几种典型的与 Tensorflow-Keras 相关的导入错误及其修正措施。始终优先采用公开文档指定的标准途径来进行库组件调用能够有效降低维护成本并提升程序稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值