在Matlab中调用tensorflow或keras

    技术2022-07-11  85

    python接口路径设置:在Matlab中设置添加可调用的python接口路径及工具

    Matlab中命令行查看python版本信息:

    >> pyversion version: '3.6' executable: 'G:\Anaconda3\python.EXE' library: 'G:\Anaconda3\python36.dll' home: 'G:\Anaconda3' isloaded: 0

    重新设置为tensorflow或keras库下python:

    >> pyversion G:\Anaconda3\envs\keras\python.exe >> pyversion version: '3.6' executable: 'G:\Anaconda3\envs\keras\python.exe' library: 'G:\Anaconda3\envs\keras\python36.dll' home: 'G:\Anaconda3\envs\keras' isloaded: 0

    Matlab中命令行python运行测试:

    >> l1=py.list([1,2,3,4]) l1 = Python list (不带属性)[1.0, 2.0, 3.0, 4.0]

    Matlab中命令行导入tensorflow或者keras模块测试:

    >> tf = py.importlib.module("tensorflow")

    报错:无法解析名称 py.importlib.module。 解决:更改函数指令 参考官方文档:Undefined variable “py” or function “py.command”

    tf=py.importlib.import_module('tensorflow')

    报错:错误使用 h5>init h5py.h5 (line 41) Python 错误 AttributeError: type object 'h5py.h5.H5PYConfig' has no attribute '__reduce_cython__' 解决:降低h5py 2.10.0库的版本到2.8.0: 参考博主文章:一个处女座的程序猿

    启动Anaconda Prompt,命令:pip install h5py==2.8.0

    报错:PermissionError: [WinError 5] 拒绝访问: 'g:\\anaconda3\\envs\\keras\\lib\\site-packages\\h5py-2.10.0.dist-info'

    解决:关闭Anaconda Prompt,右键单击“以管理员身份运行”,成功

    Successfully installed h5py-2.8.0

    Matlab中再次导入tensorflow或者keras模块测试:

    tf=py.importlib.import_module('tensorflow') tf = Python module - 属性: variable_creator_scope: [1×1 py.function] VERSION: [1×6 py.str] COMPILER_VERSION: [1×14 py.str] space_to_batch_nd: [1×1 py.function] ..........

    Matlab中tensorflow或keras环境测试:

    测试代码来源:知乎 slassddd

    clc % import libs tf = py.importlib.import_module('tensorflow'); np = py.importlib.import_module('numpy'); % set problem a = tf.Variable(np.float32(0.001), pyargs('dtype',tf.float32)); k1 = tf.placeholder(tf.float32,pyargs('shape',py.None,'name','k1')); cost = a^2 + k1*a + 5; % set optimizer optimizer = tf.train.RMSPropOptimizer(pyargs('learning_rate',0.1)).minimize(cost); init = tf.global_variables_initializer(); % solve try sess = tf.Session(); sess.run(init); dict = py.dict(pyargs(k1.name,np.array([4]))); idxr = []; costr = []; for i = 1:20 sess.run(optimizer,pyargs('feed_dict',dict)); a_val = sess.run(a,pyargs('feed_dict',dict)); cost_val = sess.run(cost,pyargs('feed_dict',dict)); % 显示信息 msgstr = ['迭代%d次:变量a=%f,cost=%f\n']; fprintf(msgstr,i,a_val,cost_val); idxr = [idxr i]; costr = [costr double(cost_val)]; end sess.close() catch sess.close() end % plot plot(idxr,costr)

    环境测试结果:

    Processed: 0.012, SQL: 9