问题描述
我有 2 个文件夹,其中包含 2 个类的视频。一个包含打篮球的人,另一个包含骑自行车的人。如何加载这些数据来训练我的网络?许多教程建议先转换 .h5,还有其他方法吗?这是我的代码。
import numpy as np
import tensorflow as tf
import pathlib
class Conv3D_Block(tf.keras.layers.Layer):
def __init__(self,filters,kernel_size,padding='same',**kwargs):
super(Conv3D_Block,self).__init__(**kwargs)
self.filters = filters
self.kernel_size = kernel_size
self.padding = padding
def __call__(self,inputs,*args,**kwargs):
x = tf.keras.layers.Conv3D(self.filters,kernel_size=self.kernel_size,padding=self.padding,kernel_initializer='he_normal',kernel_regularizer=tf.keras.regularizersl1(1e-6))(inputs)
x = tf.keras.layers.Batchnormalization()(x)
x = tf.keras.layers.Activation('relu')(x)
return x
def conv3d_l(input_shape,classes=2):
img_input = tf.keras.layers.Input(shape=input_shape)
conv3d_1 = Conv3D_Block(64,kernel_size=(3,3,3))(img_input)
conv3d_1 = tf.keras.layers.concatenate([img_input,conv3d_1],axis=-1)
conv3d_2 = Conv3D_Block(128,3))(conv3d_1)
conv3d_2 = tf.keras.layers.concatenate([conv3d_b1,conv3d_2],axis=-1)
td_flatten = tf.keras.layers.Timedistributed(tf.keras.layers.Flatten())(conv3d_2)
bd_rnn = tf.keras.layers.LSTM(128,return_sequences=False)(td_flatten)
x = tf.keras.layers.Dense(64,activation='relu')(bd_rnn)
x = tf.keras.layers.Dense(classes,activation='softmax')(x)
return tf.keras.models.Model(inputs=img_input,outputs=x)
data_file = pathlib.Path("data/videos")
model = conv3d_l(input_shape=(None,32,5),classes=2)
model.compile(optimizer="adam",loss=tf.keras.losses.CategoricalCrossentropy(),metrics=['accuracy'])
model.fit(x_train,y_train,epochs=2,validation_data=(x_test,y_test))
我如何获得 x_train
、y_train
、x_test
和 y_test
?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)