隐私政策
本隐私政策适用于由 JinlanGame(以下简称“服务提供商”)开发的用于移动设备的应用程序(以下简称“应用程序”),该应用程序作为广告支持服务。此服务“按原样”提供。

应用程序获取哪些信息以及如何使用这些信息?
用户提供的信息
应用程序会获取您在下载和注册应用程序时提供的信息。向服务提供商注册并非强制性要求。但是,请记住,除非您向他们注册,否则您可能无法使用该应用程序提供的某些功能。

服务提供商还可能使用您提供的信息不时与您联系,向您提供重要信息、所需通知和营销促销信息。

自动收集的信息
此外,应用程序可能会自动收集某些信息,包括但不限于您使用的移动设备类型、您的移动设备的唯一设备ID、您的移动设备的IP地址、您的移动操作系统、您使用的移动互联网浏览器类型以及有关您使用应用程序的方式的信息。

该应用程序是否收集设备的精确实时位置信息?
此应用程序不会收集有关您的移动设备位置的精确信息。

第三方是否可以查看和/或访问应用程序获取的信息?
只有汇总的匿名数据会定期传输到外部服务,以帮助服务提供商改进应用程序及其服务。服务提供商可能会按照本隐私声明中描述的方式与第三方共享您的信息。

请注意,本应用程序使用第三方服务,这些服务有自己的数据处理隐私政策。以下是本应用程序使用的第三方服务提供商的隐私政策链接:

Google Play 服务
AdMob
服务提供商可能会披露用户提供和自动收集的信息:

按照法律要求,例如遵守传票或类似的法律程序;
当他们真诚地相信披露对于保护他们的权利、保护您或他人的安全、调查欺诈或响应政府要求是必要的时;
与代表他们工作的可信赖的服务提供商共享信息,不会独立使用我们向他们披露的信息,并同意遵守本隐私声明中规定的规则。

我有哪些选择退出的权利?
您可以通过卸载应用程序轻松停止应用程序的所有信息收集。您可以使用移动设备中提供的标准卸载流程,或通过移动应用程序市场或网络卸载。

数据保留政策,管理您的信息
只要您使用应用程序,服务提供商就会保留用户提供的数据,并在此后的合理时间内保留。服务提供商将保留自动收集的信息长达 24 个月,此后可能会将其以汇总形式存储。如果您希望服务提供商删除您通过应用程序提供的用户提供的数据,请通过 jin404861445lan@gmail.com 联系他们,我们将在合理的时间内回复。请注意,应用程序可能需要部分或全部用户提供的数据才能正常运行。

孩子们
服务提供商不会使用该应用程序故意向 13 岁以下的儿童索取数据或向其推销产品。

本应用程序不针对 13 岁以下的任何人。服务提供商不会故意收集 13 岁以下儿童的个人身份信息。如果服务提供商发现 13 岁以下的儿童提供了个人信息,服务提供商将立即从其服务器中删除这些信息。如果您是父母或监护人,并且您知道您的孩子向我们提供了个人信息,请联系服务提供商 (jin404861445lan@gmail.com),以便他们能够采取必要的措施。

安全
服务提供商关心如何保护您的信息的机密性。服务提供商提供物理、电子和程序保护措施来保护我们处理和维护的信息。例如,我们将这些信息的访问权限限制在需要了解这些信息才能操作、开发或改进其应用程序的授权员工和承包商。请注意,尽管我们努力为我们处理和维护的信息提供合理的安全保障,但没有安全系统可以防止所有潜在的安全漏洞。

更改
本隐私政策可能因任何原因不时更新。服务提供商将通过更新此页面以新的隐私政策来通知您隐私政策的任何变更。建议您定期查阅本隐私政策以了解任何变更,因为继续使用即视为同意所有变更。

本隐私政策自 2024-09-05 起生效

您的同意
通过使用应用程序,您即同意服务提供商按照本隐私政策现在和我们修订的规定处理您的信息。“处理”是指在计算机/手持设备上使用 cookie 或以任何方式使用或接触信息,包括但不限于收集、存储、删除、使用、合并和披露信息。

联系我们
如果您在使用应用程序时对隐私有任何疑问,或对做法有疑问,请通过电子邮件 jin404861445lan@gmail.com 联系服务提供商。

创建虚拟环境指定版本:virtualenv venv --python=pythonx.x.x

CPU使用率高
./build/examples/alpha_zero_torch_example --game=new_game --actors=28 --evaluators=4 --inference_threads=4 --inference_batch_size=1 --train_batch_size=1024 --inference_cache=2621440 --max_simulations=100 --path=./point --checkpoint_freq=10 --max_steps=100 --verbose=false --devices=cuda:0,cpu --replay_buffer_size=655360 --explicit_learning=true

GPU利用率高
./build/examples/alpha_zero_torch_example --game=new_game --actors=20 --inference_batch_size=6 --inference_threads=3 --evaluators=4 --inference_cache=2621440 --max_simulations=100 --path=./point --checkpoint_freq=10 --max_steps=100 --devices=cuda:0,cpu --replay_buffer_size=655360 --explicit_learning=true

查看GPU驱动
watch -n 1 nvidia-smi
watch -n 1 gpustat

安装gpu驱动
sudo apt purge '^nvidia-.*'
sudo apt purge '^cuda-.*'
sudo apt purge '^libcuda.*'
sudo apt autoremove
sudo apt clean
ubuntu-drivers devices
nvcc -V
export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

开启Cmake 调试日志
-DCMAKE_CXX_FLAGS="-fsanitize=address -g" \
-DCMAKE_CXX_FLAGS_DEBUG="-O0" \

在alpha_zero训练时无法显示错误,如何定位错误
1.检查coredump设置,如果输出为0,则表示coredump被禁用了。
ulimit -c

2.启用coredump
ulimit -c unlimited

3.配置coredump文件的保存位置
echo "/tmp/core.%e.%p" | sudo tee /proc/sys/kernel/core_pattern

4.修改open_spiel/scripts/build_and_run_tests.sh 199行-DBUILD_TYPE=Debug

5.修改open_spiel/CMakeLists.txt 46行,set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0")

6.运行gdb ./build/examples/alpha_zero_torch_example /tmp/core.alpha_zero_torc.444708

7.bt显示错误信息

8.frame 0定位错误

9.list 上下文错误位置

import tensorflow as tf

# 指定checkpoint文件和meta文件的路径
checkpoint_path = '/Users/mac/Desktop/model/checkpoint-25'
meta_path = '/Users/mac/Desktop/model/checkpoint-25.meta'

# 创建一个新的图
graph = tf.Graph()
with graph.as_default():
    # 使用tf.compat.v1来访问旧的API
    with tf.compat.v1.Session() as sess:
        # 导入meta文件中的图结构
        saver = tf.compat.v1.train.import_meta_graph(meta_path, clear_devices=True)
        
        # 恢复模型的权重
        saver.restore(sess, checkpoint_path)
        
        # 指定输出节点
        output_node_names = 'input,value_targets'  # 你需要指定你的模型的输出节点名称
        
        # 将变量转换为常量,并保存为pb文件
        output_graph_def = tf.compat.v1.graph_util.convert_variables_to_constants(
            sess,
            sess.graph_def,
            output_node_names.split(',')
        )
        
        # 保存为.pb文件
        with tf.io.gfile.GFile('/Users/mac/Desktop/model/frozen_model.pb', 'wb') as f:
            f.write(output_graph_def.SerializeToString())

pb预测

import tensorflow.compat.v1 as tf
# 定义一个用于加载模型的函数
def load_model(model_path):
    with graph.as_default():
        # 创建一个新的tf.Session
        sess = tf.compat.v1.Session(graph=graph)
        with tf.io.gfile.GFile(model_path, 'rb') as f:
            graph_def = tf.compat.v1.GraphDef()
            # 解析GraphDef
            graph_def.ParseFromString(f.read())
            # 导入GraphDef到图
            tf.import_graph_def(graph_def, name='')
        return sess  
model_session = load_model('/home/keras/open_spiel/model/aaa.pb')
import pyspiel
import numpy as np
game = pyspiel.load_game("tic_tac_toe")
state=game.new_initial_state()
obs = np.expand_dims(state.observation_tensor(), 0)
mask = np.expand_dims(state.legal_actions_mask(), 0)
def get_var(name):
    return model_session.graph.get_tensor_by_name(name + ":0")
input = get_var("input")
legals_mask = get_var("legals_mask")
training = get_var("training")
value_out = get_var("value_out")
policy_softmax = get_var("policy_softmax")
value, policy=model_session.run(
        [value_out, policy_softmax],
        feed_dict={input: np.array(obs, dtype=np.float32),
                   legals_mask: np.array(mask, dtype=bool),
                   training: False})

例如:Y=w11+w22+b


import pandas as pd

data=pd.read_csv('/Users/mac/Desktop/Keras/000.数据+课件+代码【下部分】/小型数据集/Advertising.csv')

data.head()

x=data[data.columns[1:-1]]

x

y=data.iloc[:,-1]

y

import keras

import keras.layers as layers

model=keras.Sequential()

model.add(layers.Dense(1,input_dim=3))

model.summary()

model.compile(optimizer='adam',loss='mse')

model.fit(x,y,epochs=2000)

使用梯度下降算法

keras.Sequential() #顺序模型

model.add(layers.Dense(1,input_dim=1)) #输入数据1维,输出也是1维

import keras

import numpy as np

import matplotlib.pyplot as plt

x=np.linspace(0,100,30)

y=3*x+7+np.random.randn(30)*8

x

y

plt.scatter(x,y)

model=keras.Sequential()

from keras import layers

model.add(layers.Dense(1,input_dim=1)) 

model.summary()

#编译模型,损失函数,使得损失函数越小越好,adam:梯度下降算法,mse:均方差

model.compile(optimizer='adam',loss='mse')

#训练模型

model.fit(x,y,epochs=3000)

model.predict(x)

plt.scatter(x,y,c='r')
plt.plot(x,model.predict(x))

model.predict([150])

#!/bin/bash

# 定义源文件夹和目标文件夹
src_dir="path/to/source_directory"
dest_dir="path/to/destination_directory"

# 创建目标文件夹(如果不存在)
mkdir -p "$dest_dir"

# 循环处理源文件夹中的所有文件
for file in "$src_dir"/*
do
    # 检查文件是否是普通文件
    if [ -f "$file" ]; then
        # 获取文件名
        filename=$(basename "$file")
        
        # 使用 iconv 将文件从 GBK 转换为 UTF-8 并写入目标文件夹
        iconv -f GBK -t UTF-8 "$file" > "$dest_dir/$filename"
        
        echo "Converted $filename from GBK to UTF-8"
    fi
done

echo "Conversion complete!"