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)