python一线开发 [2021]从0开始的tensorflow2.0 (三) LSTM 假设给出如下需求: 我给你几个行为 A B C D E F 要求知道A B C D E 推测出F 这种使用场景就能使用LSTM,关于LSTM本文就不废话了,因为网上介绍一大堆了,直接上干货: 首先我们需要将数据 A B C D E F 转为编号:0 1 2 3 4 6 其次,对其进行扁平归一化,并且划分训练和测试数据: ```cpp train_path = './result_list.csv' data_frame = pd.read_csv(train_path) data_frame['activity'] = data_frame['activity'].astype('float32') scaler = StandardScaler() data_frame['activity'] = scaler.fit_transform( data_frame['activity'].values.reshape(-1, 1), scaler.fit(data_frame['activity'].values.reshape(-1, 1))) train_size = int(len(data_frame['activity']) * 0.75) trainlist = data_frame['activity'][:train_size] testlist = data_frame['activity'][train_size:] ``` 读出来应该是: 0 1 2 3 4 5 .... 然后构造滑块,成0 1 2 3 4(X), 5(Y)的样子: ```cpp look_back = 64 trainX, trainY = create_dataset(trainlist, look_back, None) testX, testY = create_dataset(testlist, look_back, train_size) ``` 注意网上的create_dataset代码都过时了,大部分你直接抄就会报错,用我的就行: ```cpp def create_dataset(dataset, look_back, start_index): dataX, dataY = [], [] for i in range(len(dataset)-look_back-1): a = dataset[i:(i+look_back)] dataX.append(a) if start_index != None: dataY.append(dataset[start_index + i + look_back]) else: dataY.append(dataset[i + look_back]) return np.array(dataX), np.array(dataY) ``` 记得要reshap一下: ```cpp trainX = trainX.reshape(trainX.shape[0], trainX.shape[1], 1) testX = testX.reshape(testX.shape[0], testX.shape[1], 1) ``` 之后直接训练即可: ```cpp model = keras.Sequential() model.add(keras.layers.LSTM(128, input_shape=(look_back, 1), return_sequences=True)) model.add(keras.layers.LSTM(256)) model.add(keras.layers.Dense(1)) model.compile(optimizer=keras.optimizers.Adam(), loss='mae', metrics=['MeanSquaredError']) model.fit(trainX, trainY, epochs=26, batch_size=128) model.save('./model_lstm.h5') ``` 测试:  阅读全文 2021-08-14 huoji 0 条评论
phppython工具软件web安全一线开发 [2021]机器学习之keras基于TextCNN的webshell识别 本来想用zend直接解析PHP opcode然后做xxoo的,然后看了一会zend源码,发现PHP真的是"动态"语言,,,比如eval(base64_encode("xxxx")) opcode只能看到eval base64_encode 其他的要动态执行才行~ 那样就复杂了,需要追踪入口,加数据做流追踪等等,实在是太麻烦,所以还是换成了传统的语义分析 #### 我们要做什么 ------------ 我打算使用一个 TextCNN 与 一个普通的二分类网络来分别做 TextCNN主要是用来检测单词数组 普通二分类网络用于检测一些常规特征,比如 文件熵(aka 文件复杂度) 文件大小(某些一句话几KB) 为了方便,我这边仅仅使用php,当然,任何都可以.样本数量是1W左右,自己写了一个一句话变种生成器(居然有部分过了主流防火墙,哈哈哈哈),生成了1000多个一句话 ### 准备 ------------ 阅读全文 2021-03-05 huoji 0 条评论
python一线开发 [2021]一些常见的机器视觉用到的神经网络结构(keras) 收藏一些常见的机器视觉用到的神经网络结构,以后不用自己构造网络了! 这些都咋用呢? 我已经写好祖传代码了: ```python def build_save_model(train_data, test_data): # 构建模型 CBAPD network_model = VGG16() network_model.compile(optimizer='adam', loss=tensorflow.keras.losses.SparseCategoricalCrossentropy( from_logits=False), metrics=['accuracy']) #cp_callback = tensorflow.keras.callbacks.ModelCheckpoint(filepath=checkpoint_save_path,save_weights_only=True,save_best_only=True) # 如果要保存点自己在fit加这个参数 # callbacks=[cp_callback] #checkpoint_save_path = "./checkpoint.ckpt" # if os.path.exists(checkpoint_save_path + '.index'): # print('-------------load the model-----------------') # network_model.load_weights(checkpoint_save_path) network_model.fit(train_data, epochs=100, validation_data=test_data, batch_size=64) network_model.summary() network_model.evaluate(test_data) tensorflow.saved_model.save( network_model, '\\model\\') ``` VGG网络: 阅读全文 2021-02-24 huoji 1 条评论