机器学习(PET图像重建、tensorflow、GPU/distributed)

本文主要介绍了TensorFlow的应用、相关概念及计算框架,还拓展了PET、图像重建等知识。阐述了线性回归、矩阵等内容,分析了GPU在处理图形和复杂算法上的优势及应用场景。此外,介绍了Python的tqdm、h5py模块,以及Jupyter的使用和内核配置。

1. TensorFlow 

TensorFlow不仅可以用来做神经网络算法研究,也可以用来做普通的机器学习算法,甚至是只要你能够把计算表示成数据流图,都可以用TensorFlow。

一个简单的小例子:(前三张:输入,最后一张:输出)loss会返回,使得输入无限准确。经过200次的训练,使得w和b的值无限接近一开始预设的0.1和0.3。

            

     

人工智能实战项目合集:https://github.com/Honlan/DeepInterests

 在使用TensorFlow之前,有必要了解如下几个概念:

 

1. 计算是用图的形式表示的。

2. Sessions是执行的入口,类似于SparkContext。

3. 数据是用tensor表示的。

4. Variables用来表示可变状态,比如模型参数。

5. 使用feeds和fetches从运算节点输入和输出数据。

 

TensorFlow计算框架要求所有的计算都表示成图,节点在图中被称为运算op(operation简称)。一个运算可以获得零个或者多个Tensors,经过计算,可以产生零个或者多个Tensors。一个Tensor是一个多维数组,举个例子,可以把一批图像数据表示成一个4维浮点数组[batch, height, width, channels]

计算图是通过Session提交,一个Session决定图中的运算该到那个设备上去计算,比如是选CPU还是CPU。运算op产生的结果在python中是一个numpy.ndarray数组对象,在C和C++中是tensorflow::Tensor实例。

 

shape [2,3] 表示为数组的意思是第一维有两个元素,第二维有三个元素,如: [[1,2,3],[4,5,6]]

TensorFlow用张量这种数据结构来表示所有的数据。你可以把一个张量想象成一个n维的数组或列表。一个张量有一个静态类型和动态类型的维数。张量可以在图中的节点之间流通。在TensorFlow系统中,张量的维数来被描述为阶。

import tensorflow as tf  

a = tf.constant([[1.,2.,3.],[4.,5.,6.],[7.,8.,9.]],shape = [3,3])  

b = tf.initialize_all_variables()  
  
with tf.Session() as sess:  

    sess.run(b)  

    print(sess.run(a))  

[[ 1.  2.  3.]  

 [ 4.  5.  6.]  

 [ 7.  8.  9.]]  

 

2. 拓展知识

PET:

正电子发射型计算机断层显像(Positron Emission Computed Tomography),是

2025-05-17 22:18:13,061 - distributed.nanny - ERROR - Failed to initialize worker Traceback (most recent call last): File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/nanny.py", line 952, in run worker = worker_factory() File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/worker.py", line 715, in __init__ ServerNode.__init__( TypeError: __init__() got an unexpected keyword argument 'memory_terminate_fraction' 2025-05-17 22:18:13,102 - distributed.nanny - ERROR - Failed to start process Traceback (most recent call last): File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/nanny.py", line 452, in instantiate result = await self.process.start() File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/nanny.py", line 759, in start msg = await self._wait_until_connected(uid) File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/nanny.py", line 901, in _wait_until_connected raise msg["exception"] File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/nanny.py", line 952, in run worker = worker_factory() File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/worker.py", line 715, in __init__ ServerNode.__init__( Traceback (most recent call last): File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/deploy/spec.py", line 125, in _wrap_awaitable return await aw File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/core.py", line 512, in start raise self.__startup_exc File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/core.py", line 523, in start await wait_for(self.start_unsafe(), timeout=timeout) File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/utils.py", line 1957, in wait_for return await asyncio.wait_for(fut, timeout) File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/asyncio/tasks.py", line 442, in wait_for return await fut File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/nanny.py", line 369, in start_unsafe response = await self.instantiate() File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/nanny.py", line 452, in instantiate result = await self.process.start() File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/nanny.py", line 759, in start msg = await self._wait_until_connected(uid) File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/nanny.py", line 901, in _wait_until_connected raise msg["exception"] File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/nanny.py", line 952, in run worker = worker_factory() File "/data/cly_tmp/miniconda3/envs/geo_gpu/lib/python3.9/site-packages/distributed/worker.py", line 715, in __init__ ServerNode.__init__( TypeError: __init__() got an unexpected keyword argument 'memory_terminate_fraction' 2025-05-17 22:18:13,354 - INFO - 集群已启动: Scheduler地址 tcp://127.0.0.1:46234 2025-05-17 22:18:13,355 - INFO - 开始处理文件: /hqstudent/cly_tmp/data/ERA5_1961_2020_Sea_surface_temperature_four_month_two_times_025x025.nc
05-19
### 解决 Dask Distributed Worker 初始化失败中的 `memory_terminate_fraction` 参数引发的 `TypeError` 在使用 Dask 的分布式计算框架时,有时会遇到因参数配置不当而导致的错误。具体到此问题中提到的 `memory_terminate_fraction` 参数所引起的 `TypeError: __init__() got an unexpected keyword argument 'memory_terminate_fraction'` 错误[^1],其根本原因通常是由于版本不一致或参数未被正确识别。 #### 版本一致性检查 首先需要确认当前使用的 `dask` 和 `distributed` 库版本是否匹配。因为 `memory_terminate_fraction` 是较新版本引入的一个选项,用于控制工作进程何时应终止以释放内存资源[^2]。如果正在运行的老版本并不支持该关键字,则自然会出现上述异常提示。 可通过如下命令查询现有安装包的具体信息: ```bash pip show dask distributed ``` 或者如果你更倾向于 Conda 环境管理工具的话, ```bash conda list | grep -E "dask|distributed" ``` 一旦发现问题源于旧版库文件,请升级至最新稳定发行版: ```bash pip install --upgrade dask distributed # 或者对于 Anaconda 用户而言, conda update dask distributed ``` #### 配置调整建议 即使解决了兼容性层面的问题,在实际部署过程中仍需合理设定相关阈值以免不必要的中断发生。默认情况下,`memory_terminate_fraction` 设定为 0.95 表明当某个 worker 占用超过总分配给它 RAM 数量百分之九十五的时候就会自动关闭自己[^3]。然而这个数值可以根据具体的业务需求做出相应修改: ```python from dask.distributed import Client, Worker client = Client(processes=True, n_workers=4, threads_per_worker=1, memory_limit='auto', memory_target_fraction=0.8, memory_spill_fraction=0.9, memory_pause_fraction=0.7, memory_terminate_fraction=0.95) # 自定义比例 ``` 注意这里我们还额外设置了几个关联属性来共同决定内存管理行为模式[^4]: - `memory_target_fraction`: 开始向调度发送警告信号的目标利用率水平; - `memory_spill_fraction`: 达到这一界限之后允许将数据溢写入磁盘存储而非完全丢弃它们; - `memory_pause_fraction`: 超过后暂停接收新的任务直到状况有所缓解为止; 最后再次强调只有确保所有参与节点上的软件栈都保持同步才能有效规避此类冲突现象的发生。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值