拿破仑时期如何步,骑,炮协同作战
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拿破仑时期如何步,骑,炮协同作战相关的知识,希望对你有一定的参考价值。
一般来说是炮兵也进行火力压制和大面积杀伤,然后骑兵趁机快速冲锋,另对手崩溃,最后步兵推进,巩固阵地,骑兵继续追击对手,步兵之后跟进...滑铁卢战败的原因之一是步兵不足,不能守住已经攻下来的阵地,而导致骑兵的拉锯战,进进退退,结果拖到了布吕歇尔的援军(自己的援军却不知所踪)到来,于是被击溃了 参考技术A 聪明的拿破仑利用“炮兵轰,步兵冲。 炮兵轰完,步兵冲。步兵冲完,炮兵轰”这是因为先用炮兵把敌人的前沿阵地打掉,干掉敌人的先头部队和敌炮兵 为的是己方步兵冲时减少伤亡 骑兵嘛!最后收战利品啦! 参考技术B 据我所知,拿破仑所指挥的战斗有几大特色:
第一、在战略大方向上的把握十分准确,精妙的机动,经常能做到出其不意地突然出现在敌人的侧后方,达到突袭效果;
第二、炮兵出生的他,十分注重炮兵的使用,在他指挥的战斗中,炮兵经常是集中使用,在战斗之初就能给予敌人以重大杀伤;
第三就是他的骑兵运用方面,这里纠正大家一个普遍的误区,到了拿破仑时代,骑兵已经不能像中世纪的重骑兵那样直接冲锋,这是火器发展的原因。拿破仑主动摒弃中世纪式的骑士冲锋,运用轻骑兵对敌包围分割,对敌人的阵地进行切割,这就像将敌人看成蛋糕,切开了再由步兵一口一口吃掉。
这就是拿破仑的马步炮协同作战的总体原则,是近代战争模式的雏形。集中炮兵进行炮火准备,骑兵进行包围分割,再由步兵将其吃掉。、
这种战法,到了第二次世界大战依然十分管用。纳粹德国就是用两次的“炮兵、空中火力准备-----装甲部队对敌人包围分割-----步兵师收拾战场”战法,先后打通了明斯克和斯洛棱思克,直奔莫斯科而去。 参考技术C 19世纪初,拿破仑一世把步兵、骑兵、炮兵合编到军、师中,使步、骑、炮更便于协同作战。恩格斯说过:“由于三个兵种合编在一个较小的军队单位里,各兵种之间的相互支援达到了最大的限度,再加上三种战斗形式—散开队形、横队和纵队的配合使用,这就形成现代军队巨大的战术优势了。”
提出了协同战术概念,并系统地论述了陆军与水军的协同,冷兵器和热兵器的协同,车、步、骑、炮、辎兵的协同问题,使协同战术思想正式产生。为合同战术的形成奠定了坚实的思想基础。拿破轮还把车、步、骑各一营在战时组成一个车、步、骑大阵(约1万人),主要用于机动作战。
TensorFlow 训练在音频分类器的第一个时期的最后一步崩溃
【中文标题】TensorFlow 训练在音频分类器的第一个时期的最后一步崩溃【英文标题】:Tensorflow Training Crashes in last step of first epoch for audio classifier 【发布时间】:2021-04-01 18:43:33 【问题描述】:我试图将最初用 Pytorch 编写的自定义 DNN 网络转换为具有所需输入形状的 Tensorflow 2 (batchsize,39,101,1)。在使用特征提取器并获得具有兼容维度的训练和验证数据集的维度后 - (total_samples,39,101,1),我尝试使用 model.fit 训练模型。在第一个 epoch 的最后一步,我遇到了如下所示的错误,这表明我的张量形状正在以某种方式发生变化。我不知道为什么这只发生在最后一步。我的回调是与模型检查点和提前停止相关的非常简单的回调,如下所示。我的数据库来自 Google Speech 数据集 v0.01。我相信这是在验证步骤开始之前发生的。如果有人能提供任何建议来解决它,那就太好了。
这是我的训练和验证数据集维度:
print(x_tr.shape) -> (17049, 39, 101, 1)
print(y_tr.shape) -> (17049, 10)
print(x_val.shape) -> (4263, 39, 101, 1)
print(y_val.shape) -> (4263, 10)
modelname, input_shape, numclass = 'CRNN', (39,101,1), 10
model = modelcreator.getmodel(modelname, input_shape, numclass)
es = EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=10, min_delta=0.0001)
mc = ModelCheckpoint('best_model.hdf5', monitor='val_acc', verbose=1, save_best_only=True, mode='max')
history=model.fit(x_tr, y_tr ,epochs=100, callbacks=[es,mc], batch_size=64, validation_data=(x_val,y_val))
纪元 1/100 266/267 [============================>.] - ETA:0s - 损失: 0.9436 - 准确度:0.6963
----------------------------------- ---------------------------- InvalidArgumentError Traceback(最近调用 最后)在 ----> 1 history=model.fit(x_tr, y_tr ,epochs=100, callbacks=[es,mc], batch_size=64, validation_data=(x_val,y_val))
~/Desktop/Spoken_Keyword_Spotting/newenv/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py 在 _method_wrapper(self, *args, **kwargs) 106 def_method_wrapper(自我,*args,**kwargs): 107 如果不是 self._in_multi_worker_mode(): # pylint: disable=protected-access --> 108 返回方法(self, *args, **kwargs) 109 110 # 已经在
run_distribute_coordinator
内部运行了。~/Desktop/Spoken_Keyword_Spotting/newenv/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split,validation_data,shuffle,class_weight, sample_weight,initial_epoch,steps_per_epoch,validation_steps, validation_batch_size,validation_freq,max_queue_size,工人, 使用多处理)1096 批次大小=批次大小): 第1097章 -> 1098 tmp_logs = train_function(iterator) 1099 if data_handler.should_sync: 1100 context.async_wait()
~/Desktop/Spoken_Keyword_Spotting/newenv/lib/python3.6/site-packages/tensorflow/python/eager/def_function.py 在调用(自我,*args,**kwds) 778 其他: 779编译器=“非Xla” --> 780 结果 = self._call(*args, **kwds) 781 第782章
~/Desktop/Spoken_Keyword_Spotting/newenv/lib/python3.6/site-packages/tensorflow/python/eager/def_function.py 在 _call(self, *args, **kwds) 805 # 在这种情况下,我们在第一次调用时创建了变量,所以我们运行 806 # deunned 版本,保证永远不会创建变量。 --> 807 return self._stateless_fn(*args, **kwds) # pylint: disable=not-callable 808 elif self._stateful_fn 不是无: 809 # 提前释放锁,以便多线程执行调用
~/Desktop/Spoken_Keyword_Spotting/newenv/lib/python3.6/site-packages/tensorflow/python/eager/function.py 在 调用(self, *args, **kwargs) 2827 with self._lock: 第2828章 self._maybe_define_function(args, kwargs) -> 2829 return graph_function._filtered_call(args, kwargs) # pylint: disable=protected-access 2830 2831 @property
~/Desktop/Spoken_Keyword_Spotting/newenv/lib/python3.6/site-packages/tensorflow/python/eager/function.py 在 _filtered_call(self, args, kwargs, cancel_manager) 1846 resource_variable_ops.BaseResourceVariable))], 1847 capture_inputs=self.captured_inputs, -> 1848 cancel_manager=cancellation_manager) 1849 1850 def _call_flat(self, args, capture_inputs, cancel_manager=None):
~/Desktop/Spoken_Keyword_Spotting/newenv/lib/python3.6/site-packages/tensorflow/python/eager/function.py 在 _call_flat(self, args, capture_inputs, cancel_manager) 1922 # 没有磁带在看;跳到运行函数。 1923年回归 self._build_call_outputs(self._inference_function.call( -> 1924 ctx、args、cancellation_manager=cancellation_manager)) 1925 forward_backward = self._select_forward_and_backward_functions( 1926 参数,
~/Desktop/Spoken_Keyword_Spotting/newenv/lib/python3.6/site-packages/tensorflow/python/eager/function.py 通话中(self,ctx,args,cancellation_manager) 548 个输入 = 参数, 第549章 --> 550 ctx=ctx) 551 其他: 552 个输出 = 执行.execute_with_cancellation(
~/Desktop/Spoken_Keyword_Spotting/newenv/lib/python3.6/site-packages/tensorflow/python/eager/execute.py 在 quick_execute(op_name, num_outputs, 输入, attrs, ctx, name) 58 ctx.ensure_initialized() 59 张量 = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name, ---> 60 个输入、属性、num_outputs) 61 除了 core._NotOkStatusException 作为 e: 62 如果名称不是无:
InvalidArgumentError: 指定了一个形状为 [64,512] 的列表,来自 形状为 [25,512] [[node TensorArrayUnstack/TensorListFromTensor]] [[functional_3/lstm_1/PartitionedCall]] [操作:__inference_train_function_13255]
函数调用栈:train_function -> train_function -> train_function
【问题讨论】:
如果你在epoch的最后一批得到错误,如果你将batch-size设置为“1”会发生什么,你会得到同样的错误吗? 您好,感谢您的回复,我找到了答案。是的,使用 bs 1 它有效 【参考方案1】:我是从下面的链接中找到的。根据这里的答案: InvalidArgumentError: Specified a list with shape [60,9] from a tensor with shape [56,9]
我的模型最后包含一个 LSTM 层,返回序列=True。因此,在最后一个时期,收到的批次的样本少于批次大小。遇到了这个问题
【讨论】:
以上是关于拿破仑时期如何步,骑,炮协同作战的主要内容,如果未能解决你的问题,请参考以下文章