我仍然试图围绕@Transactional 的工作原理进行思考。
我@Transactional对 Service 类的方法进行了@Modifying注释,对 Repository 类中的方法进行了注释。带@Transactional注释的方法是否适用于带注释的 Repository 中的方法@Modifying?
我的理解:
@Transactional在@Transactional( readOnly = true )没有数据的类的方法上写入数据库,而在使用 时@Transactional,数据写入数据库。
修改查询
- 修改方法签名只能返回
void,Integer或者int- 更新查询必须是事务性的,标记为
@Transactional- Spring Data 将删除所有未刷新的更改
EntityManager,更改为@Modifying(clearAutomatically=false)
正如第二点所说的@Modifying查询必须有@Transactional(readOnly=false),所以我们可以在@Service方法调用@Repository级别或方法级别调用中添加它。如果在@Service级别添加它也适用于@Respository从@Service级别方法调用中调用的方法?
例子:
@Service
class AnimalServiceImpl implements AnimalService {
@Autowire
AnimalRepository animalRepository;
@Override
@Transactional
public void persistAnimal() {
....
animalRepository.save();
}
@Override
@Transactional(readOnly …Run Code Online (Sandbox Code Playgroud) 我尝试使用 DeepLab v3+ 进行语义分割,但结果全黑。
我删除了原始文件,并将原始数据分别放在 ImageSets/,JPEGImages/ 和 SegmentationClass/ 中。
我根据 PASCAL VOC 2012 颜色的规则准备了 SegmentationClassRaw 图像。
我编辑了 build_voc2012_data.py 和 segmenting_dataset.py
[build_voc2012_data.py]
FLAGS = tf.app.flags.FLAGS
tf.app.flags.DEFINE_string('image_folder',
'./VOCdevkit/VOC2012/JPEGImages',
'Folder containing images.')
tf.app.flags.DEFINE_string(
'semantic_segmentation_folder',
'./VOCdevkit/VOC2012/SegmentationClassRaw',
'Folder containing semantic segmentation annotations.')
tf.app.flags.DEFINE_string(
'list_folder',
'./VOCdevkit/VOC2012/ImageSets/Segmentation',
'Folder containing lists for training and validation')
tf.app.flags.DEFINE_string(
'output_dir',
'./tfrecord',
'Path to save converted SSTable of TensorFlow examples.')
_NUM_SHARDS = 4
# add -->>
FLAGS.image_folder = "./pascal_voc_seg/VOCdevkit/VOC2012/JPEGImages"
FLAGS.semantic_segmentation_folder = "./pascal_voc_seg/VOCdevkit/VOC2012/SegmentationClassRaw"
FLAGS.list_folder = "./pascal_voc_seg/VOCdevkit/VOC2012/ImageSets/Segmentation"
FLAGS.image_format = "png"
FLAGS.output_dir = "./pascal_voc_seg/tfrecord"
# …Run Code Online (Sandbox Code Playgroud) segmentation-fault deep-learning tensorflow semantic-segmentation deeplab
我对 mlflow.set_tag() 与 mlflow.log_params() 的用例感到困惑,因为两者都采用键和值对。目前,我使用 mlflow.set_tag() 来设置数据版本、代码版本等标签,并使用 mlflow.log_params() 来设置模型训练参数,如损失、准确性、优化器等。