keras 的 example 文件 conv_lstm.py 解析

该文件演示了ConvLSTM2D和Conv3D的使用,

他的网络结构打印出来为

____________________________________________________________________________________________________
Layer (type)                                 Output Shape                            Param #
====================================================================================================
conv_lst_m2d_1 (ConvLSTM2D)                  (None, None, 40, 40, 40)                59200
____________________________________________________________________________________________________
batch_normalization_1 (BatchNormalization)   (None, None, 40, 40, 40)                160
____________________________________________________________________________________________________
conv_lst_m2d_2 (ConvLSTM2D)                  (None, None, 40, 40, 40)                115360
____________________________________________________________________________________________________
batch_normalization_2 (BatchNormalization)   (None, None, 40, 40, 40)                160
____________________________________________________________________________________________________
conv_lst_m2d_3 (ConvLSTM2D)                  (None, None, 40, 40, 40)                115360
____________________________________________________________________________________________________
batch_normalization_3 (BatchNormalization)   (None, None, 40, 40, 40)                160
____________________________________________________________________________________________________
conv_lst_m2d_4 (ConvLSTM2D)                  (None, None, 40, 40, 40)                115360
____________________________________________________________________________________________________
batch_normalization_4 (BatchNormalization)   (None, None, 40, 40, 40)                160
____________________________________________________________________________________________________
conv3d_1 (Conv3D)                            (None, None, 40, 40, 1)                 1081
====================================================================================================
Total params: 407,001
Trainable params: 406,681
Non-trainable params: 320
____________________________________________________________________________________________________

其输入和输出分别为noisy_movies和shifted_movies,也就是两段电影,影片内容是用代码生成的移动方框,如下

只要在代码中添加如下两行,即可保存一段影片:

import imageio
imageio.mimsave("my.gif", shifted_movies[3], 'GIF', duration=0.2)

而noisy_movies和shifted_movies的shape均为(1200, 15, 40, 40, 1),

也就是包含1200个影片,每个影片有15帧,分辨率为40*40,

noisy_movies和shifted_movies影片内容有什么关系呢?

其实shifted_movies是noisy_movies的每一帧的下一帧,只不过有一点点噪音而已

如果把代码中的

                if np.random.randint(0, 2):
                    noise_f = (-1)**np.random.randint(0, 2)
                    noisy_movies[i, t,
                                 x_shift - w - 1: x_shift + w + 1,
                                 y_shift - w - 1: y_shift + w + 1,
                                 0] += noise_f * 0.1

这段注释掉,然后在下面添加判断

for k in range(100):
    print(k)
    for i in range(1, 14):
        print((shifted_movies[k][i - 1].astype(np.uint8)==noisy_movies[k][i].astype(np.uint8)).all())
        # cv2.imshow("noisy", noisy_movies[k][i])
        # cv2.imshow("shift", shifted_movies[k][i - 1])
        # cv2.waitKey(1000)

我们就可以看到,这个判断永远为True,所以该代码逻辑就是,

给一段影片,预测其下一帧,可能还带一点影片清晰度的修复(消除噪音)

 

——————————————————————

总目录

keras的example文件解析

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是使用Keras建立一个LSTM模型的示例。具体来说,模型包括三个LSTM层和一个全连接层。其中,第一个LSTM层的输出数据会作为第二个LSTM层的输入数据,第二个LSTM层的输出数据会作为第三个LSTM层的输入数据。最后一个全连接层的输出数据是模型的预测结果。下面是对这段代码的解释: ``` model_LSTM = keras.models.Sequential() # 创建一个序列模型 model_LSTM.add(keras.layers.LSTM(units=64, input_shape=(time_steps, input_dim), return_sequences=True)) # 添加一个LSTM层,包含64个神经元,输入数据的形状为(time_steps, input_dim),且输出数据也是一个序列 model_LSTM.add(keras.layers.Dropout(rate=0.2)) # 添加一个dropout层,用于防止过拟合 model_LSTM.add(keras.layers.LSTM(units=32, return_sequences=True)) # 添加第二个LSTM层,包含32个神经元,且输出数据也是一个序列 model_LSTM.add(keras.layers.Dropout(rate=0.2)) # 再次添加一个dropout层 model_LSTM.add(keras.layers.LSTM(units=16)) # 添加第三个LSTM层,包含16个神经元,此时输出数据是一个向量 model_LSTM.add(keras.layers.Dropout(rate=0.2)) # 再次添加一个dropout层 model_LSTM.add(keras.layers.Dense(units=output_dim, activation='softmax')) # 添加一个全连接层,输出数据的维度为output_dim,激活函数为softmax ``` 在这个模型中,LSTM层的作用是对序列数据进行处理,dropout层的作用是为了防止过拟合,全连接层的作用是将LSTM层输出的数据转换为预测结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值